Android: create a popup that has multiple selection options

梦想的初衷 提交于 2019-11-27 11:16:26
zbr

You can create a CharSequence array with the options you want to show there and then pass the array to an AlertDialog.Builder with the method setItems(CharSequence[], DialogInterface.OnClickListener).

An example:

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

The output (on Android 4.0.3):

(Background map not included. ;))

The pop ups are nothing but AlertDialog.So you just need to create AlertDialog, then inflate your desired view using LayoutInflater and set the inflated view using setView() method of AlertDialog

Try this :

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

}

ALTERNATIVE OPTION

This is my first post so I'm excited to share my code! This worked for me:

Place these two lines above the OnCreate event

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

Place this code on the event that will trigger this

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();
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!