【Android 开发】:UI控件之 AlertDialog 对话框控件的的使用(一)

    这一讲我们开始讲Android UI界面的对话框 Dialogs。对话框是一个小的窗口,它会提示用户对一些额外的信息做一个决定。通常一个对话框不会填充整个窗口。此时对话框获取到焦点,Activity失去了焦点。Dialog 类是所有对话框的基类,通常我们也不会对这个类进行直接操作,而是使用它的子类进行操作。它的子类有:
1). AlertDialog
2). ProgressDialog
3). DatePickerDialog
4). TimePickerDialog
1. 首先我们来看一下 AlertDialog (警告框),它是继承了Dialog的子类,它是用户用的比较的多交互控件,一般对话框中包含了标题,信息,和最多三个的按钮。它会包含以下四个参数:
   1). A title
   2). A text message
   3). One, two, or three buttons
   4). A list of selectable items (with optional checkboxes or radio buttons) [包含一些列表的选项,比如说是可选的checkboxes 和 radio buttons ]
   
2. 想要创建对话框,需要使用 AlertDialog.Builder 子类,获得一个AlertDialog.Builder(Context)的Builder 对象,然后使用这个类的方法定义对话框的属性,当你这些设置好之后,就可以通过 onCreate() 方法创建了。
 
3. 程序实现如下
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initComponents();
        button.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                /*
                 * 查看API文档:AlertDialog.Builder
                 * 获得这个对象builder之后,就可以调用里面的方法来设置对话框的各种属性了
                 */
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("提示");
                builder.setMessage("你确定要删除吗?");
                builder.setIcon(R.drawable.ic_launcher);
                /*
                 * 注意是这边的; new DialogInterface.OnClickListener 的 onclick 事件并不是我们普通的单击事件。
                 */
                builder.setPositiveButton("确定", new OnClickListener() {
                    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        //完全用户的操作:比如删除数据,提交请求等
                    }
                });
                builder.setNegativeButton("取消", new OnClickListener() {
                    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        //取消用户的操作:比如停止下载等。
                        //dialog.dismiss(); //让对话框消失。 这里可以不用去处理它。
                    }
                });
                /*
                 * 还有一种按钮,这个一般是比较少用的,读者可以自己去选择
                 * 一般一个对话框是两个按钮,很少出现三个按钮。
                 */
                builder.setNeutralButton("忽略", new OnClickListener() {
                    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        //忽略用户的操作
                    }
                });

                //通常显示对话框的写法
                AlertDialog alertDialog = builder.create();
                alertDialog.show(); // 让对话框显示。
            }
        });
    }

4. 执行执行如图所示


   也可以在警告框中创建用户可选的列表选项list,就可以使用 setItems()方法。具体方式,查看API文档AlertDialog.Builder方法:public AlertDialog.Builder setItems (CharSequence[] items, DialogInterface.OnClickListener listener)。
程序代码:
    private Button button2;
    //定义3个item列表选项
    private final CharSequence[] items = {"北京", "上海", "广州"}; //这边定义为final,因为要在匿名内部类中使用
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initComponent();
        button2.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("提示");
                //builder.setMessage("请选择以下城市"); //注意如果对话框已经设置内容了,就不需在设置setMessage()方法,因为设置完之后,它会覆盖list的内容。
                builder.setItems(items, new DialogInterface.OnClickListener() {
                    
                    //查看which的值:是从0开始的,就是列表选项的序号.
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        CharSequence select_item = items[which];
                        Toast.makeText(MainActivity.this, "--->" + select_item, Toast.LENGTH_SHORT).show();
                    }
                });               
                AlertDialog alertDialog = builder.create();
                alertDialog.show();
            }
        });
    }
   执行结果

 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值