2015-08-28 33 views
1

我正在創建一個具有自定義佈局的警告對話框,並且當我按下某個佈局按鈕時我想取消對話框。Android取消具有自定義佈局的alertDialog

  LayoutInflater layoutInflater = LayoutInflater.from(GroupAdminOptions.this); 
      View alertView = layoutInflater.inflate(R.layout.change_group_name, null); 

      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(GroupAdminOptions. 
        this); 
      final EditText userInput = (EditText) alertView.findViewById(R.id.editTextUserInput); 
      Button okButton = (Button) alertView.findViewById(R.id.okButton); 
      Button cancelButton = (Button) alertView.findViewById(R.id.cancelButton); 
      okButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Log.d("QQQ","" + userInput.getText()); 
       } 
      }); 
      cancelButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Log.d("QQQ","cancel"); 
       } 
      }); 
      alertDialogBuilder.setView(alertView); 
      AlertDialog alertDialog = alertDialogBuilder.create(); 
      alertDialog.show(); 

當我按取消按鈕時可以取消alertDialog嗎?

回答

2

您必須將AlertDialog作爲全局變量,然後您可以使用AlertDialogonClick()方法然後解僱它。

將alertDialog聲明爲全局變量後嘗試此代碼。

cancelButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Log.d("QQQ","cancel"); 
        alertDialog.dismiss(); 
       } 
      }); 

我希望它有幫助!

1

嘗試在調用alertDialogBu​​ilder.show()後定義OnClickListeners,然後可以從它們中調用alertDialog.dismiss()。例如。

 final AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 

     Button okButton = (Button) alertView.findViewById(R.id.okButton);    
     okButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Log.d("QQQ","" + userInput.getText()); 
       alertDialog.dismiss(); 
      } 
     }); 

     Button cancelButton = (Button) alertView.findViewById(R.id.cancelButton); 
     cancelButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Log.d("QQQ","cancel"); 
       alertDialog.dismiss(); 
      } 
     }); 
0

當我按下取消按鈕有可能取消alertDialog?

是的,你需要調用dialog.dismiss()cancelButton.setOnClickListener(...)

+0

與AlertDialogue膨脹的自定義佈局,你沒有得到對話框對象既不解僱();方法調用 –