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

  1. Utilizar el diálogo personalizado utilizando la API de Dialog proporcionada por android LINK
  2. Para AlertDialog necesitará anularlo como se explica en este LINK
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.