2015-10-22 1 views
1

Я пытаюсь скрыть и показать часть в методе выполнения моего обработчика. Но я просто не могу заставить его работать так, как я предполагал. При доступе к PartService я получаю сообщение «Приложение не имеет активного окна».Скрыть и показать детали в обработчике

Вот мой код для сокрытия той части

@Execute 
@Inject 
public void execute(final EPartService partService) { 
    final MPart part = partService.findPart("mypart"); 
    partService.hidePart(part); 
}        

Заранее спасибо

+0

Вы называете это от диалога? –

+0

Я вызываю его внутри моего обработчика – todayihateprogramming

+0

Да, но как вы вызываете обработчик (из меню, диалога, ключевого ярлыка, ....)? Если вы вызываете команду из диалога или что-то подобное, вы получаете эту ошибку. –

ответ

1

Не указывайте @Inject на ваши методы, вам нужно только @Execute.

Использование @Inject вызывает запуск кода, когда обработчик сначала создается до того, как окно приложения существует.

Так просто:

@Execute 
public void execute(final EPartService partService) { 
+0

спасибо большое. Это решило проблему. Когда мне следует добавить @Inject. Я думал, что мне понадобится это, чтобы что-то ввести в мой метод. – todayihateprogramming

+0

'@ Execute' включает в себя выполнение инъекций. Методы '@ Inject' on используются, только если вы хотите, чтобы инжектор рассматривал метод при создании класса (не для обработчиков). Не забудьте принять этот вопрос. –