ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android:如何通过单击“确定”按钮使AlertDialog消失?

2019-11-11 07:25:16  阅读:191  来源: 互联网

标签:alertdialog android


我在下面的链接中问的是相同的问题,但是这些链接中提出的解决方案对我不起作用,因此我将其再次发布.

How to make an AlertDialog disappear?

Android AlertDialog always exits when I click on OK Button

How to navigate to next activity after user clicks on AlertDialog OK button?

基本上,我正在创建一个AlertDialog构建器,以通知用户要求启用“使用情况数据访问”的设置,并在按下“确定”按钮时打开“设置”菜单.当我按“后退”按钮返回到应用程序时,AlertDialog仍然可用,尽管我预计会被驳回以返回我的应用程序.

    public void show_alert(){

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("This application requires access to the Usage Stats Service. Please " +
                        "ensure that this is enabled in settings, then press the back button to continue ");
    builder.setCancelable(true);

    builder.setPositiveButton(
            "OK",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {

                    Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
                    startActivity(intent);
                    dialog.dismiss();
                }
            });

    builder.show();
    return;

}

有什么提示可能是什么问题吗?

解决方法:

经过一些测试后编辑:

我在6.0.1上测试了OPs代码,它的行为符合预期-即,在单击“确定”后,对话框被关闭了.我将下面的初始答案留在这里,作为一种可行的替代方法.可以找到其他替代方法here.

您可以从builder.show()方法获取对“警报对话框”的引用:

mMyDialog = builder.show();

在您的onClick方法中:

mMyDialog.dismiss();

完整样本:

AlertDialog mMyDialog; // declare AlertDialog
public void show_alert(){
  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  builder.setMessage("This application requires access to the Usage Stats Service. Please " +
                    "ensure that this is enabled in settings, then press the back button to continue ");
  builder.setCancelable(true);

  builder.setPositiveButton(
        "OK",
        new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {

                Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
                startActivity(intent);
                mMyDialog.dismiss(); // dismiss AlertDialog
            }
        });

  mMyDialog = builder.show(); // assign AlertDialog
  return;
}

标签:alertdialog,android
来源: https://codeday.me/bug/20191111/2018393.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有