专栏首页Android小知识AlertDialog点击确定不消失

AlertDialog点击确定不消失

通常情况下我们创建的AlerDialog代码如下

AlertDialog alertDialog = new AlertDialog.Builder(this)
                    .setTitle("标题")
                    .setMessage("内容")
                    .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();

但这样我们点击确定按钮的时候AlertDialog会默认消失掉。 但如果我们在弹窗里添加一个EditText输入框,判断如果输入框为空的时候弹提示而告诉用户输入框为空,请输入内容。 这种情况就需要保留AlertDialog让它不消失。

  • 解决办法如下:
    • 首先我们将PositiveButton的监听设置为null

    .setPositiveButton("确定", null)

    • 然后我们拿到PositiveButton,并由我们自己来实现监听即可是实现AlertDialog按钮不消失的需求
    • 当我们在自己定义的监听里需要让AlertDialog消失时,调用alertdialog.cancle()即可

整体代码如下

          //创建输入框
          EditText et = new EditText(this);
          AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle("备注")
                  .setMessage("经度:" + lng + "纬度:" + lat)
                  //添加输入框
                  .setView(et)
                  .setPositiveButton("确定", null)
                  .setNegativeButton("取消", null)
                  .show();
          //拿到按钮并判断是否是POSITIVEBUTTON,然后我们自己实现监听
          alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  String input = et.getText().toString();
                  if (input.equals("")) {
                      Toast.makeText(getApplicationContext(), "内容不能为空!" + input, Toast.LENGTH_LONG).show();
                      return;
                  } else {
                      //让AlertDialog消失
                      alertDialog.cancel();
                  }
              }
          });

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 简单实现微信分享(不集成SDK)

    好啦,分享到QQ、微博等等平台也可以参考这种方法哦,完全没必要费时间申请集成三方SDK!

    longzeqiu
  • DrawerLayout+NavigationView

    longzeqiu
  • Android onBackPressed不执行的解决方案

    应用中经常会用到双击返回键在退出应用的效果,目的是为了防止用户误触返回键而导致退出应用。 通常的写法如下: 首先定义一个变量

    longzeqiu
  • Android里AlertDialog多种使用方法及DEMO

    我们在使用Android的APP时经常会点击某个按钮弹出来选择的对话框提供选项,选择的对话框也可以分为多样,如确定取消类型,单选类型,复选类型,列表类型等.在A...

    Vaccae
  • 前端面试日记(二)

    https://segmentfault.com/a/1190000015304821

    前端博客 : alili.tech
  • 解决python程序在windows下cmd不能显示中文的问题

    简单、
  • “五一”假期全国旅游市场数据出炉,智慧旅游发挥重要保障作用

    ? 据文旅部数据,5月5日,全国接待国内游客1023.1万人次,实现国内旅游收入43.3亿元。 5月1日至5日,全国共计接待国内游客1.15亿人次,实现国内旅...

    腾讯文旅
  • 29行代码使用HTML5 Canvas API绘制一颗红心

    Jerry Wang
  • Tomcat在SpringBoot中是如何启动的?

    我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以直接把web程序打成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启...

    黄泽杰
  • Tomcat在SpringBoot中是如何启动的

    我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以直接把web程序达成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启...

    macrozheng

扫码关注云+社区

领取腾讯云代金券