Android 安卓:进度对话框不';不显示
当用户第一次输入我的Android 安卓:进度对话框不';不显示,android,dialog,progress,Android,Dialog,Progress,当用户第一次输入我的活动时,我将一些数据加载到数据库中,并希望在第一次加载数据时显示一个进度对话框。我的活动是一个ExpandableListActivity,我不会创建SimpleExpandableListAdapter或调用setListAdapter传递我的适配器,直到我确定数据确实存在。我的onCreate如下所示: @Override public void onCreate(Bundle savedInstanceState) { super.onCreat
活动
时,我将一些数据加载到数据库中,并希望在第一次加载数据时显示一个进度对话框
。我的活动是一个ExpandableListActivity
,我不会创建SimpleExpandableListAdapter
或调用setListAdapter
传递我的适配器,直到我确定数据确实存在。我的onCreate
如下所示:
@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的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
这看起来应该很简单,但事实证明这是一个巨大的痛苦。任何帮助都将不胜感激。:-) 只要用这句简单的话:
mProgressDialog = ProgressDialog.show(context, "", "msg to show", true);
您可以通过以下方式将其解除:
mProgressDialog.dismiss();
使用AsynTask将数据库加载处理置于后台函数和执行后显示结果中。还有另外一个函数可以处理一些东西,直到后台进程在这里运行,这就是asynTask的例子
不。没有骰子。一切都很好。我通过生成另一个线程并在run()方法中执行builder.fillDbWithDefaultCategories()来实现它。是的,这是一种实现方法,但是AsyncTask遇到了一个问题,我试图让线程休眠几秒钟,这样进度对话框将保持一段时间,而不仅仅是闪过。我最终在一个新线程中进行处理,并在一个处理程序中终止了进度对话框。