显示对话框另一个对话框后:挂起
我有一个很奇怪的问题,我无法到目前为止调试...... 事情是...我的应用程序需要下载一些工作。所以在onCreate()方法的开始,我检查是否已经下载了一些东西。如果没有,我弹出一个对话框要求用户下载它。显示对话框另一个对话框后:挂起
if (!isInstalled) {
showDialog(DIALOG_INSTALL);
} else {
start();
}
其中start()方法执行一些其他操作。现在,showDialog称之为:
builder = new AlertDialog.Builder(MyApp.this);
builder.setMessage("Would you like to install...")
.setCancelable(false)
.setPositiveButton("Install", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
aManager.install(MyApp.this);
}
});
dialog = builder.create();
return dialog;
我的对话框显示,我点击了,所以aManager.install()被调用。我传递的情况下,因为aManager.install()弹出一个ProgressDialog显示下载进度,并产生一个新的线程中,一切都被下载。所以显然在创建我的对话框之前,我让一个Handler接收来自该aManager.install()的响应。响应可能会有所不同,因为例如互联网连接不可用(Exception引发并捕获,而侦听器使用不同的代码调用)。 (例外)我想调用另一个对话框,指出“出错了,你想重试吗?”...所以再次调用showDialog(DIALOG_REINSTALL)(这次是另一个代码) 。 事情是... ShowDialog的()被调用(我可以通过登录验证这一点),但该对话框不会显示出来。相反,我的应用程序只是悬挂!?!?!?
是否有人有线索,为什么它这样做????也不例外提出,从logcat中绝对没有,我不能说出它的挂...只是看到该方法被调用,并应显示在对话框...
非常感谢您!
看起来你有一个僵局。我会将下载代码放在单独的线程上,例如使用AsyncTask
。在task.onPreExecute()
你可以辞退1对话框,弹出你通过覆盖task.onProgressUpdate()
使用.show()
而不是.create()
更新进度对话框。