¿Cómo puedo agregar botones personalizados en el diseño de AlertDialog?

Tengo AlertDialog con los botones positivos y negativos. En la disposición de AlertDialog tengo EditText y dos botones (btnAdd1, btnAdd2). Quiero cuando el usuario haga clic en el botón btnAdd1 o btnAdd2 añadir el mismo texto a EditText en AlertDialog (pero no cerrar AlertDialog). ¿Es esto posible hacer en AlertDialog o tengo que usar solamente el diálogo?

Este es el diseño (R.layout.prompt) de AlertDialog:

<LinearLayout> <EditText android:id="@+id/userInput" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" > <requestFocus /> </EditText> <Button android:id="@+id/btnAdd1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bla" /> <Button android:id="@+id/btnAdd2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bla" /> </LinearLayout> 

Y este es el código fuente:

  LayoutInflater layoutInflater = LayoutInflater.from(this); View promptView = layoutInflater.inflate(R.layout.prompt, null); AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); alertDialogBuilder.setView(promptView); alertDialogBuilder .setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //... } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alertD = alertDialogBuilder.create(); alertD.show(); 

Quiero conseguir el acceso al btnAdd1 y al btnAdd2 del diseño. Establezca OnClickListener () en estos dos botones.

El código siguiente inflar una vista de R.layout.prompt y establecerlo en el AlertDialog. No se utilizarán negative botones positive y negative . Puede configurar los comportamientos onClick para btnAdd1 y btnAdd2 :

 LayoutInflater layoutInflater = LayoutInflater.from(this); View promptView = layoutInflater.inflate(R.layout.prompt, null); final AlertDialog alertD = new AlertDialog.Builder(this).create(); EditText userInput = (EditText) promptView.findViewById(R.id.userInput); Button btnAdd1 = (Button) promptView.findViewById(R.id.btnAdd1); Button btnAdd2 = (Button) promptView.findViewById(R.id.btnAdd2); btnAdd1.setOnClickListener(new OnClickListener() { public void onClick(View v) { // btnAdd1 has been clicked } }); btnAdd2.setOnClickListener(new OnClickListener() { public void onClick(View v) { // btnAdd2 has been clicked } }); alertD.setView(promptView); alertD.show(); 

Lo que quieres hacer es;

 alertD.show(); Button button = (Button)promptView.findViewById(R.id.buttonId); button.setOnClickListener(....) 

Utilizando la vista para llamar a findViewById , en lugar de la actividad, que buscará el identificador en el diseño que se está mostrando.

De acuerdo con este enfoque soy capaz de crear el botón de imagen, pero si quiero descartar o cancelar el diálogo en el botón Cancelar, entonces lo que tengo que hacer ..

 public static void alertDialogShow(final Context context, final String resultMobile) { LayoutInflater li = LayoutInflater.from(context); View promptsView = li.inflate(R.layout.prompt, null); AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( context, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT); // set prompts.xml to alertdialog builder alertDialogBuilder.setView(promptsView); final EditText userInput = (EditText) promptsView .findViewById(R.id.editTextDialogUserInput); userInput.setText(resultMobile); userInput.setEnabled(false); btnCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { } }); 

Usted podría intentar algo como esto:

 dialog.setPositiveButton(R.string.positive, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialog.show(); } }); 
  • El método runOnUiThread (Runnable) en el tipo Activity no es aplicable para los argumentos (void)
  • Android: especificación del tema personalizado para el diálogo personalizado AlertDialog.Builder envuelve el contenido en un diálogo
  • Cómo crear un cuadro de diálogo que estará lleno en dimensión horizontal
  • PopUp diálogo Android de hilo de fondo
  • Iconos en cuadros de diálogo personalizados android
  • El cuadro de diálogo de búsqueda de Android no aparece
  • BottomSheetDialog / BottomSheetDialogFragment - ¿qué usar y cómo?
  • Cómo obtener referencia a un botón creado en un cuadro de diálogo personalizado, utilizando un diseño xml?
  • Llama al 911 en Android
  • Mostrar un pequeño popup en el punto donde el usuario hace clic en el gráfico (achartengine)
  • Descartar el diálogo no cancelable en el fragmento backPress - Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.