无法从android中的对话框关闭应用程序

Posted

技术标签:

【中文标题】无法从android中的对话框关闭应用程序【英文标题】:Not able to close app from Dialog in android 【发布时间】:2017-09-04 06:11:09 【问题描述】:

我想在应用程序中添加一项功能。我想在单击退出按钮时关闭应用程序,但我的按钮在对话框上,所以当我尝试使用 finish() 时不会这样做。我只是想关闭应用程序。请帮忙。

// 相同的代码

    if (v.getId() == R.id.imgLogout) 

        AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext());
        alertDialog.setMessage("Are you sure you want to exit?");
        alertDialog.setPositiveButton("YES", new OnClickListener() 
            public void onClick(DialogInterface dialog, int which) 
                // session.logoutUser();
                finish();


            
        );

// 但是完成在对话框中不起作用

【问题讨论】:

你为什么要开始一个活动?你需要使用 finish() 来关闭应用程序。 我没有看到你在使用finish() How to quit android application programmatically的可能重复 我使用完成但在对话框中没有工作 在调用 finish() 之前必须确定你正在通过 dismiss() 关闭对话框 【参考方案1】:

首先关闭所有暂停的活动。比你可以关闭应用程序。你记得这个活动是最后一个。

if (v.getId() == R.id.imgLogout) 

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext());
    alertDialog.setMessage("Are you sure you want to exit?");
    alertDialog.setPositiveButton("YES", new OnClickListener() 

     public void onClick(DialogInterface dialog, int which)                 
           finish();
          // context.finish();  if use in fragment
       
   );

【讨论】:

如果使用片段而不是使用 context.finish();【参考方案2】:

首先在您的对话框类中传递调用者活动的上下文,例如 MainActivit.class 上下文

现在先关闭对话框

//为了避免窗口泄漏,因为在销毁活动时它的上下文也会消失。

 dialog.dismiss();

然后

((Activity) context).finish();

【讨论】:

【参考方案3】:

关闭应用的一个非常简单的方法是:

Intent intent = new Intent(Intent.ACTION_MAIN);
                    intent.addCategory(Intent.CATEGORY_HOME);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                    finish();

所以在你的情况下试试这个:

 if (v.getId() == R.id.imgLogout) 

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext());
    alertDialog.setMessage("Are you sure you want to exit?");
    alertDialog.setPositiveButton("YES", new OnClickListener() 
        public void onClick(DialogInterface dialog, int which) 
            // session.logoutUser();
            Intent intent = new Intent(Intent.ACTION_MAIN);
                    intent.addCategory(Intent.CATEGORY_HOME);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                    finish();


        
    );

【讨论】:

以上是关于无法从android中的对话框关闭应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Android从对话框返回值

打开系统位置设置后android对话框不会关闭

从 catch 块打开时无法关闭 jQuery UI 对话框

Android中的文件下载[关闭]

Android 模拟器“允许 USB 调试”对话框在显示后立即关闭

如何从对话中最小化或关闭应用程序?