AlertDialog点击按钮后不消失

来源:互联网 发布:手机阅读软件排行 编辑:程序博客网 时间:2024/05/19 16:35
在Android中点击dialog中的确定或者取消时,就是不调用dismiss()方法,dialog还是会消失,那要是我们要在点击后处理一些逻辑,就希望点击后不消失,可以按以下方式做。
 //添加数据        btnAdd.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(final View v) {                //设置弹出窗                final AlertDialog mDialog = new AlertDialog.Builder(MainActivity.this)                        .setPositiveButton("确定", null)                        .setNegativeButton("取消", null).create();                View view = View.inflate(MainActivity.this, R.layout.layout_dialog_edit, null);                final EditText etAdd = (EditText) view.findViewById(R.id.et_add);                mDialog.setView(view);                mDialog.setCancelable(false);   //设置点击空白区域不消失                mDialog.setOnShowListener(new DialogInterface.OnShowListener() {                    @Override                    public void onShow(DialogInterface dialog) {                        //确定按键                        Button positiveButton = mDialog.getButton(AlertDialog.BUTTON_POSITIVE);                        positiveButton.setOnClickListener(new View.OnClickListener() {                            @Override                            public void onClick(View v) {                                if (TextUtils.isEmpty(etAdd.getText().toString())) {                                    Utils.Toast_long(MainActivity.this, "请输入正确的小区名字");                                } else {                                    if (dbUtil.getAreaByName(etAdd.getText().toString())) {                                        Utils.Toast_long(MainActivity.this, "小区" + etAdd.getText().toString() + "已经存在,请不要重复添加");                                    } else {                                        //保存数据并刷新页面                                        dbUtil.saveArea(etAdd.getText().toString(), null);                                        area.clear();                                        area.addAll(dbUtil.getArea());                                        myGridAdapter.notifyDataSetChanged();                                        Toast.makeText(MainActivity.this, etAdd.getText().toString(), Toast.LENGTH_SHORT).show();                                        mDialog.dismiss();                                    }                                }                            }                        });                        //取消按键                        Button negativeButton = mDialog.getButton(AlertDialog.BUTTON_NEGATIVE);                        negativeButton.setOnClickListener(new View.OnClickListener() {                            @Override                            public void onClick(View v) {                                mDialog.dismiss();                            }                        });                    }                });                mDialog.show();
就是在setPositiveButton和setNegativeButton中传入null,然后在下面获取button。
 Button positiveButton = mDialog.getButton(AlertDialog.BUTTON_POSITIVE);
这可以参见API文档中,AlertDialog中有getButton(int whichButton)方法,可以得到AlertDialog中的button。