2010-12-11 47 views
1

我在數據庫做不可逆的事情之前,試圖要求用戶確認兩次。問題是外部點擊處理程序不會等待內部點擊處理程序。在第一個對話框中點擊Yes按鈕後,會短暫顯示第二個對話框,但外部處理程序會執行並完成,最終會破壞這兩個對話框。Android嵌套AlertDialog - 這可能嗎?

new AlertDialog.Builder(ActivityMain.this).setMessage(
    "Are you sure?").setPositiveButton("Yes", 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface arg0, int arg1) { 

    new AlertDialog.Builder(ActivityMain.this).setMessage(
     "Are you really sure?").setPositiveButton("Yes", 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface arg0, int arg1) { 

    .... 

這是爲什麼?

回答

2

只是設計一個新的XML佈局你的對話框,並創建一個新的活動,並設置它的主題@android:風格/ Theme.Dialog在活動前標籤下的清單文件:

<activity android:theme="@android:style/Theme.Dialog" android:name="LocationDialog"> </activity> 

對話框中點擊收聽代碼啓動活動作爲

new AlertDialog.Builder(ActivityMain.this).setMessage(
    "Are you sure?").setPositiveButton("Yes", 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface arg0, int arg1) { 
      Intent i = new Intent(YourActivity.this, NewActivity.class); 
      startActivity(i); 
     } 

這樣將開始新的活動作爲一個對話框,您可以輕鬆地將你的行動。

+0

我還沒試過,但我喜歡。 – cdonner 2011-01-18 15:57:48

2

我相信這是因爲對話沒有阻塞。只要顯示它們,處理就會轉到下一行代碼。該對話框仍然顯示,等待用戶交互。