Cancelar un AlertDialog cuando se gira la pantalla

Tengo un AlertDialog.Builder que se muestra en una aplicación. Cuando giro la pantalla, aparece el error "La aplicación ha filtrado la ventana". ¿Cómo cancelo AlertDialog en el evento onPause ()? No veo ningún método para Ad.cancel ().

Noticias: código editado para modelo de trabajo.

   private AlertDialog inputDlg; 
   ...
   @Override
   protected void onPause ()
   {
     // close dialog if it's showing
     if (inputDlg != null)
        if (inputDlg.isShowing ())
          inputDlg.dismiss ();

      super.onPause ();
   }

   ...

   private void dlgUserPrompt (Context c)
   {
      // Set an EditText view to get user input 
      final EditText input = new EditText (c);

      AlertDialog.Builder Ab = new AlertDialog.Builder (this);
      Ab.setTitle("title");
      Ab.setMessage("I won't explode if you rotate this");
      Ab.setView(input);
      inputDlg  = Ab.show ();
   }

preguntado el 08 de noviembre de 11 a las 17:11

2 Respuestas

Creo que estas buscando el despedir método.

respondido 08 nov., 11:21

En realidad, cuando usa AlertDialog.Builder, no obtiene un método de descarte simple. Después de leer la respuesta de Kurtis, parece que la solución es bastante compleja. - wufoo

El método show () en AlertDialog.Builder devuelve un objeto AlertDialog que de hecho tiene un método de descarte. A menos que esté haciendo algo muy intensivo en computación en su opinión, es mejor que simplemente deje que Android elimine / reinicie su actividad en el cambio de configuración en lugar de anular esto en su manifiesto, ya que es una solución más simple. - Chris

Necesita anular el onConfigurationChange() gancho para hacer esto. Esta documento le ayudará a explicarle más sobre qué es exactamente un cambio de configuración y cómo manejarlo.

respondido 08 nov., 11:21

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.