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

为什么这个代码不工作? 但它的一些地方工作。我正在使用水平字段管理器为9800火炬设置标签栏,此代码中的“accountTab”是自定义按钮字段。请帮帮我.........为什么这个代码不工作?

回答

0

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

+0

我不知道任何事件处理程序的执行没有事件锁定。 – 2011-04-23 18:04:14

1

如果你将一个FieldChangeListener附加到一个Field中,你应该不需要测试它是否是Field(除非你正在做一些非常自定义的事情)。我会尝试调试并查看fieldChanged调用是否正在受到攻击,如果您想在其中使用该测试,请确保TabBar.accountTab实际上是您认为它的参考。

另一种可能性是,您没有将选项卡设置为FOCUSABLE,或者您可能在链条截获点击的位置有更多的东西,并且不允许它进一步继续。

0

做回调火灾?你有没有附加一个调试断点来判断它是否实际调用? 如果是这样的话,那么@Fostah的上面的答案是一个非常好的开始,当这个回调触发时,你可能不会在事件派发线程中...