2011-10-22 15 views
26

No he podido establecer una lista de Elección única, o una Lista de selección múltiple dentro de un AlertDialog.¿Cómo establecer elementos de Single Choice dentro de AlertDialog?

He intentado seguir los ejemplos pero solo obtengo un cuadro de diálogo con un título, los botones Aceptar y Cancelar, y ninguna lista, y NO mensaje (que configuré).

Aquí está el código:

protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DIALOG_DELETE_CITY: 
     CharSequence[] array = {"Red", "Blue", "Yellow"}; 
     return new AlertDialog.Builder(ShowPypData.this) 
      .setTitle(R.string.city_actions_delete_label) 
      .setMessage(R.string.city_actions_delete_select_label) 
      .setSingleChoiceItems(array, -1, new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         // TODO Auto-generated method stub 

        } 
       }) 
      .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 

       } 

      }) 
      .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 

       } 
      }).create(); 
    default: 
     return null; 
    } 

} 

Lo extraño es que si comento la parte setSingleChoiceItems, puedo ver el mensaje en el cuadro de diálogo.

Respuesta

39

Parece que los botones, el mensaje y los elementos de opción múltiple son mutuamente excluyentes. Intente comentar setMessage, setPositiveButton y setNegativeButton. No lo revisé yo mismo.

+7

usted toda la razón, setMessage, setSingleChoiceItems y setMultiChoiceItems son mutuamente excluyentes. Los botones en su lugar se pueden usar con todo tipo de AlertDialog. ¡Así que gracias! –

+1

desde http://developer.android.com/guide/topics/ui/dialogs.html "Dado que la lista aparece en el área de contenido del diálogo, el cuadro de diálogo no puede mostrar tanto un mensaje como una lista y debe establecer un título para el diálogo con setTitle(). " – SoloPilot

+0

Puede ayudar http://stackoverflow.com/questions/5660887/how-to-select-a-entry-in-alertdialog-with-single-choice-checkbox-android – jettimadhuChowdary

-4

Debe ser matriz y no la que

public void onClick(DialogInterface dialog, int array) 
+0

Incorrecto; ver http://developer.android.com/reference/android/content/DialogInterface.OnClickListener.html#onClick(android.content.DialogInterface, int) El segundo parámetro se refiere a qué botón se presionó, como BUTTON1. –

+6

¿Qué tipo de solución es esa? "¡Tu aplicación no funciona porque tienes un nombre de variable incorrecto!" ¿RLY? – Antoniossss

1

este código funciona para mí

final CharSequence[] charSequence = new CharSequence[] {"As Guest","I have account here"}; 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Buy Now") 
       //.setMessage("You can buy our products without registration too. Enjoy the shopping") 
       .setSingleChoiceItems(charSequence, 0, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         utility.toast(" "+charSequence); 
        } 
       }) 
     .setPositiveButton("Go", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }); 
     builder.create().show() 
Cuestiones relacionadas