web-dev-qa-db-ja.com

Android:複数の選択オプションを持つポップアップを作成します

私は、選択する4つのオプションがあるポップアップまたはダイアログを作成する方法を見つけようとして、あちこち探していました。

この画像はAndroid開発者サイトにあります。

enter image description here

右側のようなものをコーディングする方法を知っている人はいますか?テキストの横にアイコンは必要ありません。4つのオプションから選択できる必要があります。

88
Cornomaniac

そこで表示したいオプションでCharSequence配列を作成し、setItems(CharSequence[], DialogInterface.OnClickListener)メソッドでAlertDialog.Builderに配列を渡すことができます。

例:

String[] colors = {"red", "green", "blue", "black"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(colors, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // the user clicked on colors[which]
    }
});
builder.show();

出力(Android 4.0.3で):

Output

(背景マップは含まれていません。;))

262
zbr

ポップアップはAlertDialogにすぎないため、AlertDialogを作成し、LayoutInflaterを使用して目的のビューを拡張し、AlertDialogsetView()メソッドを使用して拡張ビューを設定するだけです。

6
Vishal Pawale

代替オプション

これは私の最初の投稿なので、コードを共有できることを楽しみにしています!これは私のために働いた:

OnCreateイベントの上にこれらの2行を配置します

final String[] Options = {"Red", "Blue"};
AlertDialog.Builder window;

これをトリガーするイベントにこのコードを配置します

window = new AlertDialog.Builder(this);
window.setTitle("Pick a color");
window.setItems(Options, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        if(which == 0){
           //first option clicked, do this...

        }else if(which == 1){
           //second option clicked, do this...

        }else{
        //theres an error in what was selected
            Toast.makeText(getApplicationContext(), "Hmmm I messed up. I detected that you clicked on : " + which + "?", Toast.LENGTH_LONG).show();
        }
    }
});

window.show();
1
Bart _

これを試して :

public void onClick(View v){

            final String[] fonts = {"Small", "Medium", "Large", "Huge"};

            AlertDialog.Builder builder = new AlertDialog.Builder(TopicDetails.this);
            builder.setTitle("Select a text size");
            builder.setItems(fonts, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if ("Small".equals(fonts[which])){
                        Toast.makeText(TopicDetails.this,"you nailed it", Toast.LENGTH_SHORT).show();
                    }
                    else if ("Medium".equals(fonts[which])){
                        Toast.makeText(TopicDetails.this,"you cracked it", Toast.LENGTH_SHORT).show();
                    }
                    else if ("Large".equals(fonts[which])){
                        Toast.makeText(TopicDetails.this,"you hacked it", Toast.LENGTH_SHORT).show();
                    }
                    else if ("Huge".equals(fonts[which])){
                        Toast.makeText(TopicDetails.this,"you digged it", Toast.LENGTH_SHORT).show();
                    }
                    // the user clicked on colors[which]

                }
            });
            builder.show();

}

1
Nikhil jassal