2011-06-13 58 views
5

我用下面的代码来创建自己的对话框:Android的对话框消失在自己

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(); 
} 

它工作正常,但它出现的对话框此函数内使用时,它自己会消失:

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

看来,新的活动创建,显然摆脱了对话。但为什么?开放新的活动之前不应该停止活动吗?

谢谢!

回答

5

即将发生的意图不会等待您的对话被取消。所以,在显示对话框之后,新的活动就开始了。你可以完成你想要的是这样的:

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"); 
} 
+1

此外你或许应该替换“这”的意图构造参照活动或应用上下文,因为这样一来“这个”是DialogInterface实例。我不确定,但我认为你有这个想法。 – 2011-06-13 22:10:09

+0

非常感谢您的答复! – aarelovich 2011-06-15 08:23:00