我有一个非常奇怪的问题,到目前为止我无法调试... 事情是...我的应用程序需要下载一些工作。所以在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完全没有任何异常,我无法告诉它挂在哪里...只是看到方法被调用并且对话框应该显示...
非常感谢!!
答案 0 :(得分:1)
看起来你有一个僵局。我会将下载代码放在单独的线程上,例如使用AsyncTask
。在task.onPreExecute()
中,您可以解除第一个对话框并弹出您通过覆盖task.onProgressUpdate()
答案 1 :(得分:0)
使用.show()
代替.create()
。