2011-05-24 62 views
0

如果我把這段代碼放在一個方法中,我看不到它。 有人可以幫我解決這個問題嗎?Android AlertDialog

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    builder.setMessage("Are you sure you want to exit?") 

      .setCancelable(false) 

      .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
       { 
       public void onClick(DialogInterface dialog, int id) 
       { 
        Activity.this.finish(); 

       } 

      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 

       public void onClick(DialogInterface dialog, int id) 
       { 

        dialog.cancel(); 
       } 

      }); 

    AlertDialog alert = builder.create(); 

    alert.show(); 
+2

這個代碼在哪個類中,即什麼引用了這個(MainSleepActivity?)?哪個類繼承了conaining類?你是否在UI線程或工作線程上執行此代碼? – Hyperboreus 2011-05-24 19:36:32

+1

代碼似乎正確。嘗試通過覆蓋它來創建並返回onCreateDialog(int id)中的對話框。然後當你想要實際顯示對話時使用showDialog(id)。如果這仍然不起作用,請列出您可能在logcat上看到的任何錯誤。 – 2011-05-24 19:52:32

+0

我如何在onCreateDialog中創建它? – Sebastian 2011-05-24 20:18:35

回答

0
private final static int DIALOG_XYZ = 0; 

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
     case DIALOG_XYZ: 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setMessage("Are you sure you want to exit?") 
        .setCancelable(false) 
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          Activity.this.finish(); 
         } 
        }) 
        .setNegativeButton("No", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 
      Dialog alert = builder.create(); 
      return alert; 
    } 
    return null; 
} 

然後,當你想顯示的對話框(從那裏的一次,只是做 -

showDialog(DIALOG_XYZ); 

注:由於@Hyberboreus暗示,可以不顯示在非警報對話框-UI線程(如另一個正在運行的線程或服務等)。如果這是您想要的,請查看開發者網站上提供的AsyncTask示例,告訴您如何將後臺線程與UI線程同步並更新UI。 。