2011-06-13 92 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