首页 文章

从VerticalFieldManager中删除一行

提问于
浏览
1

我正在尝试 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 回答

  • 4

    与PIMListListener一样,监听器不会在与UiApplication相同的Application上下文中收到回调 . 所以,在你的代码中, UiApplication.getUiApplication() 并不期望它 .

    最好的办法是在回调可以到达的地方存储对UiApplication的引用(可能在UiApplication初始化期间),然后用 myUiApp.invokeLater(...) 替换 UiApplication.getUiApplication().invokeLater(...) ,其中 myUiApp 是你的UiApplication的引用早先存储 .

相关问题