2010-06-21 10 views
6

J'ai un problème avec le alertdialog.builder dans le code suivant:AlertDialog.Builder: Aucun élément pour les cases à cocher sont indiqués ci-

public void showSettingsBox(){ 
    final CharSequence[] items = {"Item1", "Item2", "Item3"}; 
    final boolean checked[] = new boolean[]{false,false,false}; 

    AlertDialog.Builder builder = new AlertDialog.Builder(fLabyrinthGame); 
    builder.setMessage(fMessage) 
    .setCancelable(false) 
    .setMultiChoiceItems(items, checked, new OnMultiChoiceClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
    CharSequence text = "Item number " + which; 
    int duration = Toast.LENGTH_SHORT; 

    Toast toast = Toast.makeText(fLabyrinthGame, text, duration); 
    toast.show(); 

    } 
    }) 
    .setPositiveButton("Apply", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
    dialog.cancel(); 
    } 
    }); 
    builder.setTitle(fTitle); 
    builder.setIcon(R.drawable.icon_exclamation); 

    AlertDialog alert = builder.create(); 

    alert.show(); 
} 

Les trois articles et des cases à cocher ne sont pas affichés, il y a juste une ligne blanche entre la barre de titre et le bouton Apply. Est-ce que quelqu'un sait pourquoi cela ne fonctionne pas?

Répondre

11

Retirez la ligne builder.setMessage(fMessage) et ça va marcher :)

setMessage est utilisé uniquement lorsque vous souhaitez afficher un message texte. Si vous l'utilisez conjointement avec setMultiChoiceItems ou setItems, il semble que le constructeur passe à un état indéfini.

+0

merci beaucoup, ça marche :) – sergej

+0

Si vous avez besoin d'un titre pour votre boîte de dialogue, alors utilisez 'setTitle'. –