2010-06-21 7 views
6

Ho un problema con l'alertdialog.builder nel codice seguente:AlertDialog.Builder: Non ci sono elementi per le caselle di controllo sono mostrati

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(); 
} 

Le tre voci e caselle di controllo non vengono visualizzati, c'è solo una linea bianca tra la barra del titolo e il pulsante Applica. Qualcuno sa perché questo non funziona?

risposta

11

rimuovere la riga builder.setMessage(fMessage) e funzionerà :)

setMessage viene utilizzato solo per quando si desidera visualizzare un messaggio di testo. Se lo si utilizza in combinazione con setMultiChoiceItems o setItems, sembra che il builder vada in uno stato indefinito.

+0

grazie mille, funziona :) – sergej

+0

Se è necessario un titolo per la finestra di dialogo, utilizzare 'setTitle'. –

Problemi correlati