为什么这段代码不起作用?

时间:2011-04-21 10:35:07

标签: blackberry eclipse-plugin

accountTab.setChangeListener(new FieldChangeListener() {
   public void fieldChanged(Field field, int context) {
      if (field==TabBar.accountTab)  {
         Dialog.alert(" Account Tab is clicked ");
      }
   }
});

为什么这段代码不起作用?  但有些地方有效。我正在使用Horizo​​ntal field manager停止9800火炬的标签栏,此代码中的“accountTab”是自定义按钮字段。请帮帮我.........

3 个答案:

答案 0 :(得分:1)

如果要将FieldChangeListener附加到一个Field,则不应该真的需要测试它是否是Field(除非你做的是非常自定义的事情)。我会尝试调试并查看fieldChanged调用是否被命中,如果你想在那里使用测试,请确保TabBar.accountTab实际上是对你认为它的引用。

另一种可能性是您没有将标签设置为FOCUSABLE,或者您可能在链条上有更多内容拦截点击并且不允许它继续进行。

答案 1 :(得分:0)

提供的信息太模糊,无法确切知道问题。但是,很有可能它与您尝试打开一个对话框以响应事件并且您当前可能没有持有事件锁的事实有关。使用Application#invokeLater()打开对话框。您需要实现Runnable并从run方法调用Dialog.alert。

答案 2 :(得分:0)

回调会引发火灾吗?你有一个调试断点附加到条件,看看它是否实际调用? 如果是这样,那么@Fostah上面的回答是一个非常好的开始,你可能不会在这个回调触发时发送事件发送线程......