2011-08-22 99 views
1

我正在嘗試建立一個PIM偵聽器,它將更新列出所有手機聯繫人的MainScreen。從VerticalFieldManager中刪除一行

什麼我做的是以下幾點:

  • 我加載了一個時間只能叫ContactsForm和我一個形式,我將其存儲到RuntimeStore

  • 我創建了一個PIMListListener偵聽地址簿中將發生的所有更改。

  • 在添加聯繫人時,我成功地

  • 當聯繫人被刪除添加到contactsForm,我面臨着一個很大的問題將其刪除:S!

我得到這個exeption:「IllegalArgumentException」;這個例外的文本是:UiEngine訪問沒有保持事件鎖定。我知道這樣的錯誤,我知道如何解決它們。所以我用下面的代碼:

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

這應該可以解決問題。但是我一直得到這個錯誤。如何解決這個問題?

回答

4

聽衆,如PIMListListener,不會在與您的UiApplication相同的應用程序上下文中收到它們的回調。所以,在你的代碼中,UiApplication.getUiApplication()並不像你期望的那樣工作。

做將是您的UIApplication參考存儲在回調可以(在UIApplication的初始化過程中,也許)達到它的地方,然後用​​,其中myUiApp爲基準,以取代UiApplication.getUiApplication().invokeLater(...)的最好的事情您之前存儲的UiApplication。

+0

謝謝你,那是解決方案! :) –

+0

當然,沒問題。 –