无法从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中的对话框关闭应用程序的主要内容,如果未能解决你的问题,请参考以下文章
从 catch 块打开时无法关闭 jQuery UI 对话框