почему этот код не работает? - PullRequest
0 голосов
/ 21 апреля 2011
accountTab.setChangeListener(new FieldChangeListener() {
   public void fieldChanged(Field field, int context) {
      if (field==TabBar.accountTab)  {
         Dialog.alert(" Account Tab is clicked ");
      }
   }
});

почему этот код не работает?но в некоторых местах это работает.Я закрываю панель вкладок для фонарика 9800 с помощью горизонтального диспетчера полей, а "accountTab" в этом коде - поле настраиваемой кнопки.Пожалуйста, помогите мне .........

Ответы [ 3 ]

1 голос
/ 21 апреля 2011

Если вы присоединяете FieldChangeListener к одному полю, вам не нужно проверять, является ли оно полем (если вы не делаете что-то очень нестандартное). Я попытался бы отладить и посмотреть, получен ли вызов fieldChanged, и если вы хотите использовать там тест, убедитесь, что TabBar.accountTab действительно является ссылкой на то, что вы думаете.

Другая возможность состоит в том, что вы не установили вкладку как FOCUSABLE, или, возможно, у вас есть что-то дальше по цепочке, перехватывающее щелчки и не позволяющее ей двигаться дальше.

0 голосов
/ 21 апреля 2011

срабатывает обратный вызов? Вы приложили к условному условию точку отладки, чтобы увидеть, вызывает ли она на самом деле? если это так, то ответ @ Фоста, приведенный выше, является неплохим началом. Возможно, вы не попадете в поток рассылки событий, когда сработает этот обратный вызов ...

0 голосов
/ 21 апреля 2011

Предоставленная информация слишком расплывчата, чтобы знать точную проблему.Однако есть большая вероятность, что это связано с тем, что вы пытаетесь открыть диалоговое окно в ответ на событие, и в данный момент вы можете не удерживать блокировку события.Используйте Application # invokeLater (), чтобы открыть диалоговое окно.Вам нужно реализовать Runnable и выполнить вызов Dialog.alert из метода run.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...