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.