Android对话框自行消失

aar*_*ich 6 android dialog

我正在使用以下代码创建自己的对话框:

public void ShowMessageDialog(String str){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(str);
    builder.setCancelable(false);
    builder.setNeutralButton("Ok", new DialogInterface.OnClickListener() {          
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    AlertDialog alert = builder.create();
    alert.show();
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但在此函数中使用时,它似乎会自动消失:

public void test(String str){
    ShowMessageDialog("About to start new activity");
    Intent intent = new Intent(this,PageViewer.class);
    startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

似乎新活动已经创建并且显然摆脱了对话框.但为什么?在打开新活动之前,活动是否应该停止?

谢谢!

Igo*_*pov 7

即将触发的意图不会等待您的对话框被取消.因此,在显示对话框后,将启动新的活动.你可以像这样完成你想要的东西:

public void ShowMessageDialog(String str){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(str);
    builder.setCancelable(false);
    builder.setNeutralButton("Ok", new DialogInterface.OnClickListener() {          
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
            Intent intent = new Intent(this,PageViewer.class);
            startActivity(intent);
        }
    });
    AlertDialog alert = builder.create();
    alert.show();
}

public void test(String str){
    ShowMessageDialog("About to start new activity");
}
Run Code Online (Sandbox Code Playgroud)

  • 此外,您可能应该参考 Activity 或 Application Context 替换 Intent 构造函数中的“this”,因为这种方式“this”用于 DialogInterface 实例。我不确定,但我想你已经明白了。 (2认同)