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 लेआउट लागू नहीं करना चाहता था और जब तक मैं इस पोस्ट पर ठोकर नहीं खाता तब तक ऐसा करने का एक आसान तरीका नहीं मिल सका।
क्रिस्टोफर रथजेब

हम इन पाठों को कैसे बीच में ला सकते हैं और क्या हम इस पाठ के अंदर रंग सेट कर सकते हैं? उदा लाल लाल रंग दिखाता है ?? हरे रंग में हरे रंग का पाठ प्रदर्शित होता है?
अहमद अर्सलान

नोट: यह उदाहरण बहुविध नहीं है, फिर से पोस्ट से

नमस्कार, क्या आप यह भी दिखा सकते हैं कि मैं विशिष्ट आइटम चयन के लिए कैसे कार्य कर सकता हूं? उदाहरण: मैं उपयोगकर्ता को उन वस्तुओं में से एक पर क्लिक करके ऐप भाषा को बदलने देना चाहता हूं (शायद यदि कथन का उपयोग कर रहा है)।
अरदा Arबी

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

मुझे लगता है कि स्विच (फ़ॉन्ट [जो]) कर रहा है।

3

वैकल्पिक विकल्प

यह मेरी पहली पोस्ट है इसलिए मैं अपना कोड साझा करने के लिए उत्साहित हूं! यह मेरे लिए काम किया:

इन दो लाइनों को 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
हाँ बहुत सुधार। एक स्विच स्टेटमेंट और बेहतर बनाता है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.