2
我有一個ListView,其中onResume我試圖用SQL Lite數據庫中的數據填充。在恢復過程中,我添加一個點擊偵聽器並重新填充列表視圖。 onResume,populateListView()和onPause方法如下。完整的source code is available on GitHub。Android onResume ListView爲空之後
的onResume:
@Override
protected void onResume() {
IntentFilter filter = new IntentFilter();
filter.addAction(TalkServerIntent.INTENT_NEW_MESSAGES.toString());
registerReceiver(receiver, filter);
setContentView(R.layout.main);
talkListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parentView, View childView,
int position, long id) {
GeoCamTalkMessage msg = adapter.getTalkMessage(position);
if (msg.hasAudio()) {
try {
UIUtils.playAudio(getApplicationContext(), msg, player,
siteAuth);
} catch (Exception e) {
UIUtils.displayException(getApplicationContext(), e,
"Cannot retrieve audio");
}
}
}
});
populateListView();
super.onResume();
}
populateListView:
private void populateListView() {
try {
talkMessages = messageStore.getAllMessages();
} catch (Exception e) {
Log.i("Talk", "Error:" + e.getMessage());
}
if (talkMessages != null) {
adapter.setTalkMessages(talkMessages);
talkListView.setAdapter(adapter);
}
}
我什麼也沒做對的onPause特別,但因爲值存儲在數據庫中沒有想到我會。
的onPause
@Override
protected void onPause() {
unregisterReceiver(receiver);
super.onPause();
}
我在做什麼錯,是造成不被刷新的onResume ListView的?
@ahsteele:你有沒有試過調試過這個或遵循logcat?似乎最可能的原因是,talkMessages = messageStore.getAllMessages();返回null,所以適配器從不設置。 – Squonk 2011-04-13 00:17:48
@MisterSquonk這就是我想和發佈之前在調試器中運行應用程序。我已經密切關注了LogCat,並沒有看到任何可能表明問題的事情。但是我確實知道'messageStore.getAllMessages()'返回了肯定的消息。 – ahsteele 2011-04-13 00:21:59
@ahsteele:遠射 - 我注意到你傾向於在重寫的方法(例如onResume())結束時調用'super'方法。我看到的大多數代碼在開始時往往會有這些代碼(有一些例外)。有沒有機會RoboActivity在其onResume()方法中做些什麼,這可能會產生負面影響?正如我所說,這似乎不太可能,只是一個長鏡頭。 – Squonk 2011-04-13 00:47:13