Android: buat popup yang memiliki beberapa pilihan pilihan


109

Saya telah mencari-cari mencoba mencari cara membuat popup atau dialog yang memiliki 4 opsi untuk dipilih.

Saya melihat gambar ini di situs pengembang Android:

masukkan deskripsi gambar di sini

Adakah yang tahu cara membuat kode seperti yang di kanan? Saya tidak memerlukan ikon apa pun di samping teks saya, saya hanya perlu memilih dari 4 opsi.

Jawaban:


289

Anda dapat membuat Stringarray dengan opsi yang ingin Anda tunjukkan di sana dan kemudian meneruskan array tersebut ke AlertDialog.Builderdengan metode setItems(CharSequence[], DialogInterface.OnClickListener).

Sebuah contoh:

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

Outputnya (di Android 4.0.3):

Keluaran

(Peta latar belakang tidak termasuk.;))


5
.create()tidak diperlukan di sini, .show()akan mengembalikan dialog yang dibuat oleh pembuat dan kemudian menampilkannya juga
— TronicZomB

2
Terima kasih banyak untuk ini. Saya benar-benar tidak ingin menerapkan tata letak xml untuk menu teks sederhana dan tidak dapat menemukan cara mudah untuk melakukan ini sampai saya menemukan posting ini.
— Christopher Rathgeb

Bagaimana kita bisa menengahi teks ini dan dapatkah kita mengatur warna di dalam teks ini? misal merah menunjukkan warna merah ?? teks hijau ditampilkan dalam warna hijau?
— Ahmad Arslan

Catatan: contoh ini bukan multipel, baca lagi judul dari posting :)

Halo, dapatkah Anda juga menunjukkan bagaimana saya dapat mengatur tindakan untuk pilihan item tertentu? Contoh: Saya ingin mengizinkan pengguna mengubah bahasa aplikasi dengan mengklik salah satu item tersebut (mungkin menggunakan pernyataan if).
— Arda Çebi

6

Munculan tidak lain adalah AlertDialog. Jadi Anda hanya perlu membuat AlertDialog, lalu memekarkan tampilan yang Anda inginkan menggunakan LayoutInflaterdan mengatur tampilan melambung menggunakan setView()metodeAlertDialog


4

Coba ini :

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

Saya pikir switch (font [yang]) melakukannya.

3

OPSI ALTERNATIF

Ini adalah posting pertama saya, jadi saya senang membagikan kode saya! Ini berhasil untuk saya:

Tempatkan dua baris ini di atas acara OnCreate

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

Tempatkan kode ini pada acara yang akan memicu ini

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
Ya banyak perbaikan. Pernyataan switch lebih baik
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.