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


109

私は、4つのオプションから選択できるポップアップまたはダイアログを作成する方法を理解するために探し回っています。

私はこの画像をAndroid開発者サイトに表示します。

ここに画像の説明を入力してください

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

回答:


289

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

例:

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の場合):

出力

(背景地図は含まれていません。;))


5
.create()ここでは不要です。.show()ビルダーによって作成されたダイアログを返し、それも表示します
TronicZomB

2
どうもありがとうございました。私は本当にシンプルなテキストメニューのxmlレイアウトを実装したくなかったので、この投稿を偶然見つけたまで、これを行う簡単な方法を見つけることができませんでした。
クリストファーラスゲブ2014年

これらのテキストをどのようにしてミドル化し、このテキスト内に色を設定できますか?たとえば、赤は赤い色を示しますか?緑色のテキストが緑色で表示されますか?
Ahmad Arslan

注:この例は複数ではありません。投稿からタイトルをもう一度読んでください:)

こんにちは、特定のアイテム選択に対してアクションを設定する方法を示すこともできますか?例:ユーザーがそれらのアイテムの1つをクリックして(おそらくifステートメントを使用して)アプリの言語を変更できるようにしたいと思います。
Arda biebi 2018

6

ポップアップは何もないけどAlertDialog。だからあなたはただ作成する必要がありAlertDialog、その後、使用して、目的のビューを膨らませるLayoutInflaterと、使用して膨張したビューを設定setView()する方法をAlertDialog


4

これを試して :

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

switch(font [which])がやっていると思います。

3

代替オプション

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

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

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
はい、多くの改善。switchステートメントがさらに改善されました
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.