android - 如何在后台退出 android 应用程序?
问题描述
情况可能就像说,我有 5 个活动。说主要活动、活动 1、活动 2、活动 3 和活动 4。
可以借助插入主 Activity 布局的按钮直接使用 Activity 1、2、3 和 4。
情况:用户进入Main Activity,按一下按钮进入Activity 2,然后再按一下回到Main Activity。从那里他现在在另一个按钮的帮助下进入活动 3,同样,当他按下返回按钮时,他进入主活动。
主要活动 --> 活动 2 --> 主要活动 --> 活动 3 --> 主要活动。
问题:现在用户从活动 3 进入主活动。用户在 Main Activity 布局上。现在,如果用户按下手机上的后退按钮,则将通过以下过程退出应用程序:
主活动 --> 活动 3 --> 主活动 --> 活动 2 --> 主活动 --> 退出
需要完成:我想从主活动本身退出应用程序,如果用户按下手机上的后退按钮,那么我希望用户应该能够退出,而不是按照上述路径退出应用程序它从 Main Activity 本身通过显示一个简单的 AlertDialog 框。
怎么能做到这一点,因为我无法找到解决这个问题的方法?
解决方案
您需要onBackPressed()
在您的内部覆盖MainActivity()
并使用finishAffinity
来完成所有活动
当活动检测到用户按下返回键时调用。
finishAffinity()
:
added in API level 16
在当前任务中完成此活动以及紧接其下的所有具有相同亲和力的活动。
示例代码
@Override
public void onBackPressed() {
super.onBackPressed();
ActivityCompat.finishAffinity(MainActivity.this);
}
编辑
我希望用户应该能够通过显示一个简单的 AlertDialog 框从主活动本身退出它。
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
.setTitle("Alert")
.setCancelable(false)
.setMessage("Are your sure want to exit?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.finishAffinity(MainActivity.this);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.show();
}
推荐阅读
- javascript - 如何在 Angular 6 分页的表格中打印记录。(所有记录不仅是当前页面)
- javascript - 使用 Google Apps 脚本和 JavaScript 从 google 表格反映 HTML 中的选项值
- php - 将json转换为多级数组
- python - 如何在循环中将 r 前缀包含到字符串中?
- installation - Atmel Studio 7.0 及其安装程序抛出错误:“找不到一个或多个组件。请重新安装应用程序。”
- mysql - MySql中的WHEN条件生成多列而不是一列?
- c# - 如何在 C# 表单应用程序中从 MDVR 播放 .264 格式的原始视频文件
- c# - 无法加载文件或程序集“Microsoft.ML.Api”
- php - 如何打印避免重复天数的时间表?
- c# - 如何访问 ViewBag 中的动态对象成员