web-dev-qa-db-fra.com

Comment définir des éléments à choix unique dans AlertDialog?

Je n'ai pas pu définir une liste à choix unique ou une liste à choix multiples dans un AlertDialog.

J'ai essayé de suivre les exemples, mais je reçois uniquement une boîte de dialogue avec un titre, les boutons Ok et Annuler, et aucune liste, et aucun message (que j'ai défini!).

Voici le code:

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

}

La chose étrange est que si je commente la partie setSingleChoiceItems, je peux voir le message dans la boîte de dialogue.

31
Julian Suarez

Il semble que Buttons, Message et Multiple choice items S'excluent mutuellement. Essayez de mettre en commentaire setMessage(), setPositiveButton() et setNegativeButton(). Je ne l'ai pas vérifié moi-même.

41
slkorolev

ce code fonctionne pour moi

 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()
5
saigopi