我正在尝试建立一个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));
}
}});
这应该可以解决问题。但我一次又一次地得到这个错误。如何解决这个问题?
答案 0 :(得分:4)
侦听器(如PIMListListener)不会在与UiApplication相同的Application上下文中收到回调。因此,在您的代码中,UiApplication.getUiApplication()
并不像您期望的那样真正起作用。
最好的办法是在回调可以到达的地方存储对UiApplication的引用(可能在UiApplication初始化期间),然后用UiApplication.getUiApplication().invokeLater(...)
替换myUiApp.invokeLater(...)
,其中myUiApp
是您之前存储的UiApplication的引用。