studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android android-alertdialog dismiss

programacion - Cómo descartar AlertDialog en android



manual de programacion android pdf (7)

Creé AlertDialog que contiene 4 botones

OptionDialog = new AlertDialog.Builder(this); OptionDialog.setTitle("Options"); LayoutInflater li = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = li.inflate(R.layout.options, null, false); background = (Button) v.findViewById(R.id.bkgSpinnerLabel); SoundVib = (Button) v.findViewById(R.id.SoundVibSpinnerLabel); OptionDialog.setView(v); OptionDialog.setCancelable(true); OptionDialog.setNeutralButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { } }); background.setOnClickListener(new OnClickListener() { public void onClick(View v) { SetBackground(); // here I want to dismiss it after SetBackground() method } }); SoundVib.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent soundVibIntent = new Intent(SebhaActivity.this, EditPreferences.class); startActivity(soundVibIntent); } }); OptionDialog.show();

Quiero descartarlo después del método SetBackground (), ¿cómo puedo hacer esto? gracias por adelantado.


Aquí es cómo cierro mi alertaDialog

lv_three.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { GetTalebeDataUser clickedObj = (GetTalebeDataUser) parent.getItemAtPosition(position); alertDialog.setTitle(clickedObj.getAd()); alertDialog.setMessage("Öğrenci Bilgileri Güncelle?"); alertDialog.setIcon(R.drawable.ic_info); // Setting Positive "Yes" Button alertDialog.setPositiveButton("Tamam", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // User pressed YES button. Write Logic Here } }); alertDialog.setNegativeButton("İptal", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { //alertDialog. alertDialog.setCancelable(true); // HERE } }); alertDialog.show(); return true; } });


Creo que hay una solución más simple: simplemente use el argumento DialogInterface que se pasa al método onClick .

AlertDialog.Builder db = new AlertDialog.Builder(context); db.setNegativeButton("cancel", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface d, int arg1) { d.cancel(); }; });

Ver, por ejemplo, http://www.mkyong.com/android/android-alert-dialog-example .


En realidad, no hay ningún método cancel() o dismiss dismiss() de la clase AlertDialog.Builder.

Entonces, en lugar de la AlertDialog.Builder optionDialog usa la instancia de AlertDialog .

Me gusta,

AlertDialog optionDialog = new AlertDialog.Builder(this).create();

Ahora, solo llame a optionDialog.dismiss();

background.setOnClickListener(new OnClickListener() { public void onClick(View v) { SetBackground(); // here I want to dismiss it after SetBackground() method optionDialog.dismiss(); } });


Hay dos formas de cerrar un diálogo de alerta.

Opción 1:

AlertDialog#create().dismiss();

Opcion 2:

The DialogInterface#dismiss();

Fuera de la caja, el framework llama a DialogInterface#dismiss(); cuando defines detectores de eventos para los botones:

  1. AlertDialog#setNegativeButton();
  2. AlertDialog#setPositiveButton();
  3. AlertDialog#setNeutralButton();

para el diálogo de Alerta.


Para descartar o cancelar AlertDialog.Builder

dialog.setNegativeButton("إلغاء", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); } });

llama a dismiss () en la interfaz de diálogo


Prueba esto:

AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog OptionDialog = builder.create(); background.setOnClickListener(new OnClickListener() { public void onClick(View v) { SetBackground(); OptionDialog .dismiss(); } });


Simplemente configure la vista como nula que cerrará el AlertDialog simple.