Android 关于 AlertDialog

应用场景:弹出一个对话框,点击对话框以外不关闭,点击返回键不关闭,输入值不符合要求点击确定按钮不关闭,输入值正确后才关闭。
1.点击对话框以外不关闭,修改一个设置项,代码如下:

.setCancelable(false);

2.点击返回键不关闭,添加对话框对返回键的监听,代码如下:

.setOnKeyListener(new DialogInterface.OnKeyListener() {
    @Override
    public boolean onKey(DialogInterface dialog,int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_SEARCH) {
            return true;
        } else {
            return false; // 默认返回 false
        }
    }
});

3.对话框上的确定点击不关闭,确定按钮设置监听,代码如下:

.setPositiveButton("确定", null);//如果在null的位置设置监听,只要点击就会关闭对话框。

//确定按钮的监听设置
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String input=et.getText().toString();
        if(input.equals("")){
            return;
        }else{
            //添加执行操作
            dialog.dismiss();
        }
    }
});

在第三点的时候遇到一个问题,就是.getButton(AlertDialog.BUTTON_POSITIVE) 返回值是null,解决办法是:.show()要在.getButton(AlertDialog.BUTTON_POSITIVE) 前面。
特此做个记录,如果哪里写错了,还请指正。
完整代码如下:

final EditText et = new EditText(this);  
Builder builder=new AlertDialog.Builder(this)
    .setTitle("搜索")
    .setIcon(android.R.drawable.ic_dialog_info)
    .setView(et)
    .setCancelable(false)
    .setPositiveButton("确定", null)
    .setOnKeyListener(
    new DialogInterface.OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface dialog,int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_SEARCH) {
                return true;
            } else {
                return false; // 默认返回 false
            }
        }
    });
final AlertDialog dialog=builder.create();
dialog.show();//先调用
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String input=et.getText().toString();
        if(input.equals("")){
            return;
        } else {
            //添加执行操作
            dialog.dismiss();
        }
    }
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值