2015-08-28 4 views
1

Я создаю диалоговое окно с настраиваемым макетом, и я хочу отменить диалоговое окно, когда я нажимаю одну из кнопок макета.Android cancel 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(); 

Можно отменить оповещениеDialog, когда я нажимаю кнопку отмены?

ответ

2

Вы должны сделать AlertDialog глобальной переменной, тогда вы можете использовать AlertDialog внутри метода onClick(), а затем отпустите его.

Попробуйте этот код после объявления alertDialog как глобальной переменной.

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

Надеюсь, это поможет!

1

Попробуйте определить OnClickListeners после вызова alertDialogBuilder.show(), после чего вы можете вызвать 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, вы не получите объект диалога ни уволить(); вызов метода –

Смежные вопросы