Cierre de un cuadro de diálogo de alerta personalizada al hacer clic en el botón

Tengo problemas para cerrar mi cuadro de diálogo de alerta. Estoy utilizando un inflador de diseño para hacer el diálogo, por lo que no estoy seguro de cómo iba a ir sobre el cierre de la cosa después de que haya terminado con él. El código está abajo:

AlertDialog.Builder dialog = new AlertDialog.Builder(AddData.this); DialogInterface dia = new DialogInterface(); //Create a custom layout for the dialog box LayoutInflater inflater = (LayoutInflater)AddData.this.getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.add_rep_1_set, parent, false); TextView title = (TextView)layout.findViewById(R.id.rep_1_title); Button add_item = (Button)layout.findViewById(R.id.add_button); add_item.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //Need this to close the alert dialog box } }); title.setText(workout_items[position]); dialog.setView(layout); dialog.show(); 

No puedo llamar al final, porque cierra el listview de que se inicia el diálogo de alerta y las llamadas dialog.dismiss no están disponibles para mí.

¿Qué crees que debo hacer para arreglar esto?

 AlertDialog.Builder dialog = new AlertDialog.Builder(AddData.this); DialogInterface dia = new DialogInterface(); //Create a custom layout for the dialog box LayoutInflater inflater = (LayoutInflater)AddData.this.getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.add_rep_1_set, parent, false); TextView title = (TextView)layout.findViewById(R.id.rep_1_title); Button add_item = (Button)layout.findViewById(R.id.add_button); title.setText(workout_items[position]); dialog.setView(layout); AlertDialog alertDialog = dialog.create(); add_item.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { alertDialog.dismiss(); } }); alertDialog.show(); 

Hazlo asi,

 add_item.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); 

Prueba esto:

  AlertDialog.Builder builder = new AlertDialog.Builder(this); LayoutInflater inflater = getLayoutInflater(); View dialogView = inflater.inflate(R.layout.brush_opts_dialog,null); builder.setView(dialogView); closeBtn = (Button)dialogView.findViewById(R.id.close_btn); final AlertDialog dialog = builder.create(); closeBtn .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); dialog.show(); 

Debería usar el AlertDialog.Builder para "construir" el propio Diálogo de Alertas. A continuación, llame al método create () en el objeto AlertDialog.Builder. Este método devuelve un objeto AlertDialog, que le permite llamar a dismiss ().

No debería tener que crearlo varias veces ni utilizar ningún objeto DialogInterface. Esto funciona para mí. Dejame saber como te va.

He modificado tu código plz comprobar ..

  AlertDialog.Builder dialog = new AlertDialog.Builder(AddData.this); DialogInterface dia = new DialogInterface(); //Create a custom layout for the dialog box LayoutInflater inflater = (LayoutInflater)AddData.this.getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.add_rep_1_set, parent, false); TextView title = (TextView)layout.findViewById(R.id.rep_1_title); Button add_item = (Button)layout.findViewById(R.id.add_button); final AlertDialog Dial = alertDialog.create(); title.setText(workout_items[position]); Dial.setView(layout); AlertDialog alertDialog = dialog.create(); add_item.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Dial.dismiss(); } }); Dial.show(); 

Recien agregado

Final AlertDialog Dial = alertDialog.create (); Y cambiar dialog.setView (layout); A Dial.setView (diseño);

Ahora solo llama a Dial.dismiss (); En el oyente onclick .. funciona bien para mí.

Intente dialog.cancel (); En su oyente onclick. Deberia de funcionar.

Es necesario implementar DialogInterface.OnClickListener en lugar de View.OnClickListener. Entonces dialog.dismiss () estará disponible.

 new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which){ dialog.dismiss(); } } 
  • Android EditText en AlertDialog parece demasiado amplio
  • ¿Cómo mostrar el diálogo de alerta en un subproceso en ejecución?
  • Cómo establecer la validación nulo en el cuadro de diálogo edittextpreference
  • Estilo de botón en AlertDialogs
  • ¿Cómo hacer que el cuadro de diálogo personalizado parezca Diálogo de alertas?
  • Cómo establecer la posición de un AlertDialog de la pantalla en la parte superior en Android?
  • Recuperación del valor de EditTexts en el constructor AlertDialog mediante Layout
  • Diálogo de alerta con un campo numérico de EditText
  • builder.setInverseBackgroundForced (true) no funciona
  • ¿Creación de AlertDialog con métodos estáticos?
  • El cuadro de diálogo se muestra dos veces cuando se pulsa de nuevo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.