我正在尝试 Build 一个PIM监听器,它将更新一个MainScreen,其中列出了手机的所有联系人 .
我正在做的是以下内容:
-
我只加载了一个名为ContactsForm的表单,我将它存储到RuntimeStore中
-
我创建了一个PIMListListener来监听通讯录中将发生的所有更改 .
-
添加联系人后,我将其成功添加到contactsForm
-
删除联系人后,我将面临一个很大的问题:S !!!
我得到这个例子:“IllegalArgumentException”;此异常的文本是:UiEngine无需持有事件锁即可访问 . 我知道这些错误,我知道如何解决它们 . 所以我使用了以下代码:
UiApplication.getUiApplication().invokeLater( new Runnable() { public void run() {
synchronized(UiApplication.getEventLock()) {
uiContacts.vm.delete(uiContacts.vm.getField(j));
}
}});
这应该可以解决问题 . 但我一次又一次地得到这个错误 . 怎么解决这个?
1 回答
与PIMListListener一样,监听器不会在与UiApplication相同的Application上下文中收到回调 . 所以,在你的代码中,
UiApplication.getUiApplication()
并不期望它 .最好的办法是在回调可以到达的地方存储对UiApplication的引用(可能在UiApplication初始化期间),然后用
myUiApp.invokeLater(...)
替换UiApplication.getUiApplication().invokeLater(...)
,其中myUiApp
是你的UiApplication的引用早先存储 .