我在网上搜索但我没有找到任何令人满意的答案。
我有一个任务可以花一些时间来完成,所以我使用ProgressDialog来通知用户该应用程序正在做某事。
如果在长任务期间出现错误,我想显示一个AlertDialog,让用户知道错误。
所以我写了代码,但ProgressDialog解散了,而AlertDialog没有显示。
我使用onCreateDialog()方法来管理我的对话框。
有人知道为什么吗?
谢谢。
答案 0 :(得分:1)
我不确定为什么你的代码无效,但是如果这是一个时间问题,你可能会尝试使用Handler在短暂的延迟后调用显示你的第二个对话框:
new Handler().post(new Runnable() {
@Override
public void run() {
showDialog(ERROR_CREDENTIALS_DIALOG);
}
});
这可能会给UI线程一些时间来清理第一个对话框,第一个对话框的存在可能会影响第二个对话框。您也可以尝试使用postDelayed
,但需要很短的时间延迟,例如100毫秒。
答案 1 :(得分:0)
您可以使用以下功能显示警告对话框。
public void OpenDialog()
{
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("Error");
dialog.setTitle("Your Message");
dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int buttons)
{
try
{
}
catch(Exception e)
{
e.printStackTrace();
}
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface arg0, int buttons)
{
}
});
dialog.show();
}
答案 2 :(得分:0)
在打开警告对话框之前,应确保完全取消进度对话框。我使用取消方法。
progressDialog.setOnCancelListener(本);
...
public void onCancel(final DialogInterface dialog){ showAlertDialog(); }
...
progressDialog.cancel()
任务完成后,您将调用progressDialog.cancel(); 这将触发onCancel方法并打开警报对话框,显示警报输出和动画。
注意:你也可以使用dismiss(),但它更容易出错。