¿Cómo crear una preferencia personalizada con un botón neutral?

Utilizo el código de abajo para crear una preferencia personalizada. El archivo de diseño xml tiene un Button , EditText y TextView . Este diseño personalizado aparece dentro de una Alert con los botones "Aceptar" y "Cancelar". Todo esto funciona bien.

Me gustaría añadir un tercer botón (un botón neutral) al lado de los botones "Aceptar" y "Cancelar" He experimentado con la clase AlertBuilder pero no puedo imaginar cómo incorporar tanto mi diseño personalizado xml como un botón neutral.

¿Cómo se puede hacer esto?

Actualmente …

 public class MelsMessage extends DialogPreference { Button bMessage; EditText eMessage; TextView tMessage; public MelsMessage(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } protected View onCreateDialogView() { LayoutInflater layoutInflater = LayoutInflater.from(getContext()); View view = layoutInflater.inflate(R.layout.dialog_pref_mess, null); //UI elements bMessage = (Button) view.findViewById(R.id.buttonMessage); eMessage = (EditText) view.findViewById(R.id.edittextMessage); tMessage = (TextView) view.findViewById(R.id.textviewMessage); return view; } } 

Veo que su pregunta es un poco antigua y tal vez ya tiene la respuesta a su pregunta, pero aquí hay una solución para su clase que amplía DialogPreference.

Primero tiene que reemplazar el método onPrepareDialogBuilder en su clase MelsMessage :

 @Override protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { super.onPrepareDialogBuilder(builder); builder.setNeutralButton("hello", this); } 

this en el método setNeutralButton es la interfaz DialogInterface.OnClickListener que implementa la clase DialogPreference .

Lo último que tienes que hacer es sobreescribir el método onClick en tu clase MelsMessage :

 @Override public void onClick(DialogInterface dialog, int which) { super.onClick(dialog, which); switch (which) { case DialogInterface.BUTTON_POSITIVE: // do things for the right button break; case DialogInterface.BUTTON_NEGATIVE: // do things for the left button break; default: // do things for the center button break; } } 

Si quieres manejar el clic en otra clase todo lo que tienes que hacer es implementar DialogInterface.OnClickListener en esta clase.

Espero que esto te ayudará. Aclamaciones.

Cuando se sobreescribe onCreateDialogView y no se establece el setPositiveButton y setNegativeButton el botón ok y cancelar debe desaparecer, ¿no? Porque en ese método está reemplazando el diseño predeterminado y estableciendo un personalizado.

Si ese es el caso, entonces usted debe crear su propio diseño de fondo personalizado con 3 botones y añadirlo en el inflado. Intenta buscar e implementar la "ButtonBar inferior" que tiene toda la implementación necesaria, porque no veo en los documentos ningún método o una forma de implementar el botón neutral como en un diálogo normal.

Puede crear cuadro de diálogo personalizado con 3 botones o escribir código como

 Dialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); Dialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancle", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { }}); Dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "Do Nothing" new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { }}); 
  • Cambio de una preferencia 'Resumen
  • Los valores de caché de SharedPreferences tienen sentido?
  • Cómo agregar iconos a Preferencias
  • Cómo borrar las viejas preferencias al actualizar la aplicación de Android?
  • ¿Cómo hacer lo contrario de atributo de preferencia android: dependencia?
  • Preferencias sin métodos obsoletos
  • Mostrar el botón de arriba en la barra de acción en las preferencias de la pantalla principal
  • Archivo de preferencias del usuario vs Archivo de preferencias de la aplicación
  • ¿Cómo almacenar de forma segura el token de acceso y el secreto en Android?
  • Dependencia múltiple en checkboxpreference dependencia de android o listpreference
  • Cómo eliminar PreferenceCategory de forma programática?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.