Удалить строку из VerticalFieldManager - PullRequest
1 голос
/ 22 августа 2011

Я пытаюсь установить прослушиватель PIM, который будет обновлять главный экран, где перечислены все контакты телефона.

Что я делаю, так это:

  • Я один раз загружаю только форму с именем ContactsForm и сохраняю ее в RuntimeStore

  • Я создал PIMListListener для прослушивания всех изменений, которые произойдут в адресной книге.

  • Когда добавляется контакт, я успешно добавляю его в список контактов.

  • При удалении контакта я сталкиваюсь с большой проблемой при его удалении: S !!!

Я получаю это исключение: "IllegalArgumentException"; текст этого исключения: UiEngine доступен без удержания блокировки события. Я знаю такие ошибки и знаю, как их устранить. Поэтому я использовал следующий код:

UiApplication.getUiApplication().invokeLater( new Runnable() { public void run() {
  synchronized(UiApplication.getEventLock()) {
     uiContacts.vm.delete(uiContacts.vm.getField(j));
  }
}});

Это должно решить проблему. Но я продолжаю получать эту ошибку снова и снова. Как решить эту проблему?

1 Ответ

4 голосов
/ 22 августа 2011

Слушатели, такие как PIMListListener, не получают свои обратные вызовы в том же контексте приложения, что и ваше UiApplication.Итак, в вашем коде UiApplication.getUiApplication() на самом деле не работает так, как вы ожидаете.

Лучшее, что можно сделать, - это сохранить ссылку на ваше UiApplication в месте, где обратный вызов можетдостигните его (возможно, во время инициализации UiApplication), а затем замените UiApplication.getUiApplication().invokeLater(...) на myUiApp.invokeLater(...), где myUiApp - ссылка на ваше UiApplication, которое вы сохранили ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...