Java 在另一个对话框之后显示对话框:挂起
我有一个非常奇怪的问题,到目前为止我无法调试。。。 问题是…我的应用程序需要下载一些东西才能工作。因此,在onCreate()方法的开头,我检查是否已经下载了一些内容。如果没有,我会弹出一个对话框,要求用户下载它Java 在另一个对话框之后显示对话框:挂起,java,android,dialog,Java,Android,Dialog,我有一个非常奇怪的问题,到目前为止我无法调试。。。 问题是…我的应用程序需要下载一些东西才能工作。因此,在onCreate()方法的开头,我检查是否已经下载了一些内容。如果没有,我会弹出一个对话框,要求用户下载它 if (!isInstalled) { showDialog(DIALOG_INSTALL); } else { start(); } 其中start()方法执行其他一些操作。现在,该showDialog
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来显示下载进度,并生成一个新线程,其中所有内容都已下载。显然,在创建对话框之前,我会创建一个处理程序来接收来自aManager.install()的响应。响应可能会有所不同,因为例如,internet连接不可用(引发并捕获异常,并使用不同的代码调用侦听器)
现在,当这种情况发生时(异常),我想调用另一个对话框,说“出现了问题,您想重试吗?”…因此,再次调用showDialog(dialog_REINSTALL)(这次使用另一个代码)。
事情是……showDialog()被调用(我可以通过日志来验证),但对话框没有显示。相反,我的应用程序只是挂起
有人知道它为什么这么做吗????没有引发异常,logcat中绝对没有任何内容,我无法告诉它挂起的位置…只需查看调用了该方法并显示对话框即可
非常感谢 看起来您遇到了死锁。我会将下载代码放在单独的线程上,例如使用
AsyncTask
。在task.onPreExecute()
中,您可以关闭第一个对话框并弹出进度对话框,通过覆盖task.onProgressUpdate()
使用.show()
而不是.create()
来更新进度对话框