我有一些數據在用戶第一次輸入Activity
時加載到數據庫中,並且希望在第一次加載此數據時顯示ProgressDialog
。我的活動是ExpandableListActivity
,我不創建SimpleExpandableListAdapter
或致電setListAdapter
通過我的適配器,直到我確定數據實際存在。我onCreate
看起來是這樣的:Android:進度對話框不顯示
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCategoryDbHelper = new CategoryDBHelper(this);
// Build default categories... if not there yet
CategoryDbBuilder builder = new CategoryDbBuilder(this);
if (!builder.hasCategoriesInTable()) {
showDialog(PROGRESS_DIALOG_ID);
builder.fillDbWithDefaultCategories();
removeDialog(PROGRESS_DIALOG_ID);
}
populate();
}
我已經覆蓋onCreateDialog
這樣:
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case PROGRESS_DIALOG_ID: {
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("Loading categories for the first time. Please wait...");
dialog.setIndeterminate(true);
dialog.setCancelable(false);
return dialog;
}
}
return null;
}
的populate()
方法讀取數據庫並建立我的名單適配器,然後調用setListAdapter
。
這看起來應該很簡單,但它是一個巨大的痛苦。任何幫助,將不勝感激。 :-)
是的,這是這樣做的一種方式,但是AsyncTask在嘗試讓線程休眠幾秒鐘時遇到了問題,所以進度對話框會保持一點而不是閃爍。我最終在一個新線程中完成了處理,並在Handler中終止了進度對話框。 – 2010-08-31 07:33:10