Detener AlertDialog de cerrar con clic de botón positivo
Estoy tratando de configurar un AlertDialog personalizado, que tiene 2 botones, cancelar y un botón positivo. Necesito hacerlo tan qué el botón positivo se hace clic, puedo cambiar el texto, y no tener el diálogo cerca.
Flujo brusco es el botón positivo dirá "Enviar", cuando se hace clic en él cambiará a "Enviar …", entonces el código enviará algunos datos a nuestro servidor, y si la respuesta es verdadera, cierre el diálogo, si es False o timeouts etc muestran un mensaje de error (Toast) y mantener el diálogo abierto.
Tengo código para enviar datos al servidor, manejando respuestas etc, apenas no puedo pensar cómo corregir la clase de AlertDialog implementar esto. ¿Alguien sabe cómo iba a hacer esto?
Código de prueba actual:
AlertDialog.Builder b = new AlertDialog.Builder(getActivity()); b.setView(getActivity().getLayoutInflater().inflate(R.layout.dialog_single_text, null)); b.setTitle("Forgotten Password"); b.setMessage("Please enter your email"); b.setPositiveButton("Send", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getActivity(), "Sending...", Toast.LENGTH_SHORT).show(); } }); b.create().show();
Usted puede agregar un onShowListener al AlertDialog
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(); } }); } });
Hay dos enfoques para lograr esto
- Utilizar el diálogo personalizado utilizando la API de
Dialog
proporcionada por android LINK - Para
AlertDialog
necesitará anularlo como se explica en este LINK