2011-06-08 12 views
9

Estoy haciendo una aplicación y tiene un diálogo de alerta en ella.cuadro de diálogo de alerta en android no debe ignorar

Ahora estoy verificando algunos datos que obtuve de AlertDialog editTexts en el cuadro de diálogo Botón positivo Método OnClick, pero el cuadro de diálogo siempre descarta si los datos que obtuve de los campos de texto de edición son correctos o no.

Cómo podemos desactivar esta función.

ACTUALIZADO:

estoy poniendo el código PIN y Confirma el código PIN del cuadro de diálogo y haga clic en onPositive he comprobado para verificar los códigos PIN.

Ahora, si los códigos PIN coinciden, entonces está llamando a dialog.dismiss() y si no coinciden, muestra un Toast.

Pero en caso de que el código pin no coincida, me muestra el mensaje y cierra el cuadro de diálogo.

No quiero que eso suceda.

más actualizaciones:

¿Hay alguna manera de que voy a desactivar el botón OK y cuando se verifique los datos que permitirá el botón positivo ??

Por favor, ayuda

+0

lo que quieres y quieren sucede? –

+1

¿Puede agregar algún código con su descripción? Es difícil decir lo que quiere de su pregunta. Supongo que quieres validar los datos de entrada, ¿es correcto? ¿Estás usando una subclase de AlertDialog para hacer esto? –

+0

Agregue el código donde configuró su Diálogo de alertas. Será mucho más fácil ver dónde van las cosas mal. –

Respuesta

3

Cap. Gracias por tu ayuda. a través de sus guías tengo que saber que puedo desactivar el botón de diálogo de alerta. ¡SÍ! es posible desactivar los botones.

respuesta es:

podemos deshabilitar el botón usando:

Button pos = Dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); 
    pos.setEnabled(true); 
+0

cómo obtenemos la función dialog.getButton – Vikky

+0

use el método 'getDialog()' y transfiéralo a 'AlertDialog'. Tenga en cuenta que esto debe realizarse en onResume, por ejemplo, y luego puede mantener una referencia a ese objeto. Ejemplo: 'this.okButton = ((AlertDialog) getDialog()) .getButton (AlertDialog.BUTTON_POSITIVE); ' – Reinherd

1

si quieres despedir de diálogo siempre que lo desee a continuación, debe necesitar utilizar diálogo personalizado en lugar de Alerta de diálogo.

AlertDialog siempre descartar cuando presiona el botón Negativo o Positivo de AlertDialog.

Para obtener más información acerca de diálogo personalizado a continuación Click here Custom Dialog

+0

. De todas formas, deshabilitaré el botón positivo y cuando se verifiquen los datos, lo habilitará ????? – Shah

+0

en alertaDialog no .. bt todo es posible en el cuadro de diálogo personalizado –

27

Este es el truco (OnClickListener anular interior onShowListener):

final AlertDialog d = new AlertDialog.Builder(context) 
       .setView(v) 
       .setTitle(R.string.my_title) 
       .setPositiveButton(android.R.string.ok, 
         new Dialog.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface d, int which) { 
           //Do nothing here. We override the onclick 
          } 
         }) 
       .setNegativeButton(android.R.string.cancel, null) 
       .create(); 

     d.setOnShowListener(new DialogInterface.OnShowListener() { 

      @Override 
      public void onShow(DialogInterface dialog) { 

       Button b = d.getButton(AlertDialog.BUTTON_POSITIVE); 
       b.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View view) { 
         // TODO Do something 

         //Dismiss once everything is OK. 
         d.dismiss(); 
        } 
       }); 
      } 
     }); 
+0

¡Justo lo que quería! Lo único es que tu aplicación debería estar ejecutándose al menos en Froyo ... para mí esto no es un problema =) –

+0

¡Gracias! ¡Si pudiera, le daría 100 puntos! –

+1

¡Qué gran solución! Solo una pequeña corrección: en lugar de la línea '.create()' Tuve que almacenar el resultado use 'final AlertDialog ad = d.create();'. Luego, tuve que definir el método 'ad's (no' d''s) 'setOnShowListener()', y de manera similar usar el método 'ad's (no' d''s) 'getButton()' (this es por eso que la variable tiene que ser 'final'). Si no lo hice de esa manera, obtuve errores de compilación, porque esos métodos pertenecen a la clase 'AlertDialog', no a la clase' AlertDialog.Builder'. –

Cuestiones relacionadas