AlertDialog点击按钮后不消失

在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。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您可以按照以下步骤实现: 1. 在您的布局文件中,添加两个按钮,例如: ``` <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示列表对话框" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="进入页面2" /> ``` 2. 在您的活动类中,获取这两个按钮的引用,并设置按钮1的点击事件侦听器,例如: ``` Button button1 = findViewById(R.id.button1); Button button2 = findViewById(R.id.button2); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建一个字符串数组,作为列表对话框的选项 final String[] items = {"选项1", "选项2", "选项3"}; AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("请选择一个选项"); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 当用户选择一个选项时,对话框消失 dialog.dismiss(); } }); AlertDialog dialog = builder.create(); dialog.show(); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 进入页面2 Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } }); ``` 3. 当用户点击按钮1时,将显示一个列表对话框,当用户选择一个选项时,对话框将消失。当用户点击按钮2时,将进入页面2。 希望这可以帮助您实现您的需求!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值