android - Android 清除 Back Stack 上的一些 Activity
问题描述
假设我有 A -> B -> C -> D 或 A -> C-> D
当 D 完成时,我想返回但跳过 C,它将返回 A 或 B。
但是当用户使用后退按钮时,它会正常返回 D -> C -> B -> A 或 D -> C -> A
我们如何在android中做到这一点?
解决方案
在 B Activity 中编写此代码
public void gotoC()
{
Intent intent = new Intent(B.this, C.class);
startActivityForResult(intent, 10);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case 10:
}
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
调用 Intent 去 D Activity 时 C 类中的 ForwardActivityResult
public void gotoD()
{
Intent intent = new Intent(Activity.C, D.class);
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(intent);
finish();
}
在 D 活动 GO 到 B 活动调用 RESULT_OK
public void gotoB()
{
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
}
推荐阅读
- javascript - 替换 document.querySelectorAll
- javascript - Google 表格脚本 - 以管理员/所有者身份运行脚本
- kubernetes - 在 Kubernetes 集群上设置 nginx 入口控制器
- python - 我对 python 有点陌生,我必须在 x 轴上用 datetime 列绘制图表,但它应该只在 x 轴上显示时间
- javascript - 在 Javascript 中查找最常用的单词
- java - 我安装了 android studio 并创建了我的第一个项目并遇到了这个错误...我点击了所有链接但什么也没发生
- jenkins - 如何在 Jenkins UI 中显示扫描的 SonarQube 分支
- php - 无法通过使用while循环php进行求和并获得相同的值
- node.js - 如何在命令行应用程序中持久化数据?
- linux - Iterm2 alt + backspace 像 Linux