android入门 — AlertDialog对话框

发布时间:2025-12-09 12:02:14 浏览次数:1

  常见的对话框主要分为消息提示对话框、确认对话框、列表对话框、单选对话框、多选对话框和自定义对话框。

  对话框可以阻碍当前的UI线程,常用于退出确认等方面。

  在这里主要的步骤可以总结为:  1.创建AlertDialog.Builder对象;

  2.调用setTitle()或setCustomTitle()方法设置标题;

  3.调用setIcon()设置图标;

  4.调用setPositiveButton()、setNegativeButton()或setNeturalButton()添加按钮;

  5.调用AlertDialog.Builder的create()方法来创建AlertDialog对象;

  6.调用AlertDialog.Builder的show()方法将对话框显示出来。

  这一部分,主要使用的是设计模式中的建造者模式,将东西提供给builder,然后会组装成一个完整的对话框。

①显示提示消息的对话框

                                        public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id)                                        {                                            new AlertDialog.Builder(this)                                            .setIcon(R.drawable.ic_4)                                            .setTitle("提示")                                            .setMessage("这是一个提示信息")                                            //处理对话框的时候往往是在一个事件中处理,所以此时使用内部类的方式去做                                            .setPositiveButton("确定", new DialogInterface.OnClickListener() {                                                @Override                                                public void onClick(DialogInterface dialog, int which) {                                                    //注意这里的this必须要修改,因为是在内部类中,所以直接使用this指的是这个内部类,所以需要修改                                                    Toast.makeText(MainActivity.this, "点击了确认", Toast.LENGTH_SHORT).show();                                                }                                            })                                            .show();                                            return true;                                        }

设置了图标、标题和提示信息等属性。

②确认对话框

         public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id)                            {                                new AlertDialog.Builder(this)                                        .setIcon(R.drawable.ic_4)                                        .setTitle("提示")                                        //可以设置null,表示在点击之后什么都不做,没有后续的处理                                        //只是使得对话框消失                                        .setNegativeButton("取消", null)                                        //处理对话框的时候往往是在一个事件中处理,所以此时使用内部类的方式去做                                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {                                            @Override                                            public void onClick(DialogInterface dialog, int which) {                                                //注意这里的this必须要修改,因为是在内部类中,所以直接使用this指的是这个内部类,所以需要修改                                                //Toast.makeText(MainActivity.this, "点击了确认", Toast.LENGTH_SHORT).show();                                                //也可以使用finish()结束当前activity的生命周期,变为不可见,之后还可以使用这个activity的资源                                                //如果当前的activity是主界面,那么activity栈就变成空的,                                                finish();                                                //如果调用exit()则是                                                //System.exit(0);                                            }                                        })                                        .show();                                return true;                            }

  在这里添加了图标、标题。

  主要的改变是增加了setNegativeButton()方法和setPositiveButton()方法,用来点击确认或者取消。

③列表对话框

 public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id)                                    {                                        final String[] arr = {"水可载舟,亦可赛艇。", "不要总想搞大新闻!", "西方哪个国家我没去过?", "too young,too simple!"};                                        new AlertDialog.Builder(this)                                                .setIcon(R.drawable.ic_4)                                                .setTitle("提示")                                                .setItems(arr, new DialogInterface.OnClickListener() {                                                    @Override                                                    public void onClick(DialogInterface dialog, int which) {                                                        Toast.makeText(MainActivity.this, "您选择了: " + arr[which], Toast.LENGTH_SHORT).show();                                                    }                                                })                                                .setPositiveButton("确定", new DialogInterface.OnClickListener() {                                                    @Override                                                    public void onClick(DialogInterface dialog, int which) {                                                    }                                                })                                                .setNegativeButton("取消", new DialogInterface.OnClickListener() {                                                    @Override                                                    public void onClick(DialogInterface dialog, int which) {                                                    }                                                })                                                .show();                                        return true;                                    }

  首先会定义一个字符数组,然后在onClick()中将字符数组与之绑定。

④自定义对话框

1.定义一个弹出框的格式(用xml定义)

  2.反射出对话框

public class Main2Activity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);    }    Dialog dialog;    public void btnClick(View v)    {        LayoutInflater inflater = LayoutInflater.from(this);        View myView = inflater.inflate(R.layout.layout_myself_dialog, null);        AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setView(myView);        myView.findViewById(R.id.btn).setOnClickListener(new View.OnClickListener()        {            public void  onClick(View v)            {                //利用dialog来dismiss                //使得这个对话框消失                dialog.dismiss();                Toast.makeText(Main2Activity.this, "点击了确定", Toast.LENGTH_SHORT).show();            }        });        //必须用一个Dialog类型的变量保存builder.create()产生的对象        dialog = builder.create();        dialog.show();    }}
alertdialog
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477