#blackberry #eclipse-plugin
#ежевика #eclipse-плагин
Вопрос:
accountTab.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field field, int context) {
if (field==TabBar.accountTab) {
Dialog.alert(" Account Tab is clicked ");
}
}
});
почему этот код не работает?
но в некоторых местах это работает. Я закрываю панель вкладок для 9800 torch с помощью Horizontal field manager, а «accountTab» в этом коде является пользовательским полем кнопки. Пожалуйста, помогите мне………
Ответ №1:
Если вы прикрепляете FieldChangeListener к одному полю, вам действительно не нужно проверять, является ли это полем (если вы не делаете что-то очень нестандартное). Я бы попробовал отладку и посмотрел, попадает ли вызов fieldChanged или нет, и если вы хотите использовать там тест, убедитесь, что TabBar.accountTab на самом деле является ссылкой на то, что вы думаете, что это такое.
Другая возможность заключается в том, что вы не настроили вкладку как ФОКУСИРУЕМУЮ, или, возможно, у вас есть что-то дальше по цепочке, перехватывающее щелчки и не позволяющее продолжить работу дальше.
Ответ №2:
Предоставленная информация слишком расплывчата, чтобы точно определить проблему. Однако есть большая вероятность, что это связано с тем фактом, что вы пытаетесь открыть диалоговое окно в ответ на событие, и, возможно, в данный момент у вас не установлена блокировка события. Используйте приложение#invokeLater(), чтобы открыть диалоговое окно. Вам нужно будет реализовать Runnable и создать диалоговое окно.вызов предупреждения из метода run.
Комментарии:
1. Я не знаю ни о каких обработчиках событий, которые выполняются без блокировки события.
Ответ №3:
срабатывает ли обратный вызов? вы прикрепили точку останова отладки к условию, чтобы посмотреть, действительно ли оно вызывает? если это так, то ответ @Fostah выше — довольно хорошее место для начала, вас может не быть в потоке отправки событий, когда срабатывает этот обратный вызов…