studio - Evitar que ProgressDialog se cierre cuando hago clic en el botón de búsqueda(Android)
mensaje de confirmación android studio (4)
Esto funciona (aviso lo puse en el constructor de diálogo):
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SEARCH && event.getRepeatCount() == 0) {
return true; // Pretend we processed it
}
return false; // Any other keys are still processed as normal
}
})
Tal vez incluso es posible agarrar los botones positivos y negativos, y solo manejarlos, devuelve verdadero para cualquier otra tecla. Sería curioso si puede darse cuenta de eso ...
PD: He leído que hay más "agujeros" en el diálogo, es decir, puedes deshacerte de él sin presionar ningún botón. Esto fue aparentemente uno. ¿Alguien sabe de algún otro?
En una operación de larga duración, estoy mostrando un cuadro de diálogo emergente (creado a partir de ProgressDialog
para evitar que ocurran otras operaciones).
Lo he hecho no setCancelable(false)
con setCancelable(false)
, por lo que no puedo cerrarlo con el botón Atrás, pero, sorprendentemente, ¡el botón Buscar hardware cierra el diálogo!
Más exactamente, se muestra la aplicación de búsqueda global, y cuando vuelvo a mi aplicación, el cuadro de diálogo se ha cerrado.
¿Alguna idea de cómo evitar que el diálogo sea descartado?
onCreateDialog crear sus cuadros de diálogo a través del evento onCreateDialog la Actividad, ya que ese es el punto donde los gestiona la Actividad y se restaurarán cuando se reanude la actividad.
Devolución de llamada para crear diálogos administrados (guardados y restaurados) por la actividad. Si usa showDialog(int)
, la actividad llamará a este método la primera vez y se mantendrá en él posteriormente. Cualquier cuadro de diálogo creado por este método se guardará y restaurará automáticamente, incluso si se muestra. Si desea que la actividad administre los cuadros de diálogo de guardado y restauración, debe anular este método y manejar cualquier ID que se pase a showDialog (int). Si desea tener la oportunidad de preparar su diálogo antes de que se muestre, sobrescriba onPrepareDialog(int, Dialog)
.
Ejemplo de uso:
public class MyClass extends Activity {
// ........ //
static final int DATE_DIALOG_ID = 1;
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,
mDay);
}
return null;
}
public void launchSetDate() {
showDialog(DATE_DIALOG_ID);
}
}
mProgressDialog.setCancelable(false);
trabajó para mi.
setCanceledOnTouchOutside(false);