2016-09-21 2 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 IMはalertDialog.show()を呼び出していますか?はい、それは右のボタンのIDを参照している –

答えて

4

問題は簡単ですが、トリッキーな1:

は、ここに私のコードの抜粋です あなたはビルダーからAlertDialogを作成し、それdialogを呼び出します。キャンセルボタンをクリックすると、dialogが閉じます。しかし、あなたは実際にdialog.show()と呼ばれるダイアログを実際に表示したことはありませんが、代わりにalertDialogと呼ばれるのshow()メソッドを呼び出しました。この方法ではダイアログを作成して1つのステップで表示しますが、新しいインスタンスを作成します。新しいインスタンスを作成すると、名前を付けられなくなり、もう閉じることができなくなります。

alertDialog.show()の代わりにdialog.show()に電話するか、またはAlertDialog dialog = alertDialog.show()を使用して、2番目のalertDialog.show()を完全に削除する必要があります。

関連する問題