2016-09-21 68 views
1

我試圖在單擊取消按鈕時關閉AlertDialog,但它不起作用。我嘗試使用.dismiss().cancel(),但它們都不起作用。如何關閉或取消自定義提醒對話框

這裏是我的代碼片段:

final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); 
         LayoutInflater layoutInflater = LayoutInflater.from(context); 
         final View viewer = layoutInflater.inflate(R.layout.input_dialog, null); 

         alertDialog.setTitle("Edit Albums Name"); 
         alertDialog.setView(viewer); 

         Button send =(Button) viewer.findViewById(R.id.saveAlBtn); 
         Button cancel =(Button) viewer.findViewById(R.id.dismissBtn); 


     final AlertDialog dialog = alertDialog.create(); 

          cancel.setOnClickListener(new View.OnClickListener() { 
           @Override 
           public void onClick(View v) { 
            dialog.cancel(); // dialog.dismiss(); 
           } 
          }); 
    alertDialog.show(); 
+0

你確定ID爲'dismissBtn'的按鈕是正確的按鈕嗎?也許你在xml中複製它,忘記更改id或其他東西。另外,你什麼時候調用'dialog.show()'? – Gumbo

+0

@Gumbo我調用alertDialog.show()?是的,我把它引用到正確的按鈕ID –

回答

4

的問題是一個簡單的,但棘手的一個: 您從製造商創建一個AlertDialog,並調用它dialog。點擊取消按鈕後,關閉dialog。但是您從未真正展示過對話框,即dialog.show(),而是將其稱爲Buildershow()方法,該方法稱爲alertDialog。該方法一步創建並顯示對話框,但它會創建一個新的實例,但您不能指定名稱,因此無法再關閉。

您需要撥打dialog.show()而不是alertDialog.show()或使用AlertDialog dialog = alertDialog.show()並完全刪除第二個alertDialog.show()