2013-12-19 28 views
7

您好我有以下問題:WinDeath上notifyDataSetChanged()

data.clear(); 
data.addAll(datasource.getFilesInFolder()); //gets the data from Sqlite database 
adapter.notifyDataSetChanged(); 

生成此logcat的輸出:

12-19 14:34:30.864: W/Binder(986): Caught a RuntimeException from the binder stub implementation. 
12-19 14:34:30.864: W/Binder(986): java.lang.NullPointerException 
12-19 14:34:30.864: W/Binder(986):  at  android.inputmethodservice.IInputMethodWrapper.setSessionEnabled(IInputMethodWrapper.java:280) 
12-19 14:34:30.864: W/Binder(986):  at com.android.internal.view.IInputMethod$Stub.onTransact(IInputMethod.java:129) 
12-19 14:34:30.864: W/Binder(986):  at android.os.Binder.execTransact(Binder.java:404) 
12-19 14:34:30.864: W/Binder(986):  at dalvik.system.NativeStart.run(Native Method) 
12-19 14:34:30.864: W/InputMethodManagerService(757): Got RemoteException sending setActive(false) notification to pid 30040 uid 10174 

這種異常會導致死亡WIN ...

嗯,我意識到也許它是相反的方式,WIN DEATH導致這個日誌輸出,因爲在日誌WINDEATH之前有這個,那麼我不知道爲什麼會發生windeath。

我的適配器擴展了BaseAdapter,沒有什麼特別的東西。非常奇怪的是以下內容:

上面提到的一段代碼是在另一個類觸發的自定義偵聽器中。當我將有問題的部分放在聽衆之外時,它運作良好。我的Caught a RuntimeException from the binder stub implementation是什麼意思?它可能是數據庫的問題嗎?或者可能是我的自定義偵聽器? 任何人有一個想法是什麼錯?

+2

確定該堆棧跟蹤與關聯這一點的代碼? – CommonsWare

+0

很確定,當我評論notifyDataSetChanged時,問題沒有了......但列表沒有更新 – slezadav

+0

這是奇怪的。這是什麼樣的'適配器'? – CommonsWare

回答

2

我看到在執行併發操作時出現此問題的各種問題。例如參見this thread(fling + service)和this one(從2個線程畫在畫布上)。

你正在談論一個不同類別的自定義偵聽器,是不是一次可以做幾件事?

+1

我使用凌空來管理請求,並將它們排隊,所以這不是原因。問題與我在頁面之間切換的速度有關。 –

1

您應該直接將數據添加到適配器中。

而不是做

data.clear(); 
data.addAll(datasource.getFilesInFolder()); //gets the data from Sqlite database 
adapter.notifyDataSetChanged(); 

你應該做

if(adapter!=null) 
{ 
    adapter.clear(); 
    adapter.addAll(datasource.getFilesInFolder()); //gets the data from Sqlite database 
    adapter.notifyDataSetChanged(); 
} 

我覺得適配器爲null這是在你的情況引起的問題

相關問題