android - 如何显示 Activity 堆栈中的 Activity

标签 android android-activity activity-stack

我需要一些有关 Activity 堆栈的帮助。

在我的应用程序中,用户可以从 6 个屏幕进行导航

  1-->2-->3-->4-->

当我转到 4 屏幕时,我有取消按钮

当用户单击该按钮时,它应该转到第二个屏幕,并且

当用户单击键盘上的后退按钮时,它应该转到1 个已经在 Activity 堆栈中的屏幕如何执行此操作。

请举个例子。

最佳答案

只需使用FLAG_ACTIVITY_CLEAR_TOP

当用户点击按钮时:

Intent intent = new Intent(ActivityD.this, ActivityB.class);
Intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

当用户按返回时:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Intent intent = new Intent(ActivityD.this, ActivityA.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent);
    }
    return super.onKeyDown(keyCode, event);
}

此代码会将用户带到第一个 Activity。由于 FLAG_ACTIVITY_SINGLE_TOP,该 Activity 不会重新创建。当 Activity 已位于后台堆栈时,将调用 onNewIntent(),例如您可以在其中使用来自 Intent 的数据。

如果您希望此类行为作为您的 Activity 的默认行为,请将这些标志放入 android list 并放入 Activity 声明中。

关于android - 如何显示 Activity 堆栈中的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5455696/

相关文章:

android - 防止 Android 上的虚假位置

EditText 的安卓日期键盘类型

java - 内存不足错误 : When receiving XML response of 2. 3 MB

android - 当我切换 Instagram 等 Activity 时,如何保持 Android 应用程序的底部固定

android - 清除 android Activity 堆栈开始新 Activity

android - Android-Room 可以自动创建迁移吗?

java - 如何在 finish() 方法中获取上下文?

android - noHistory 与 finish() - 哪个是首选?

android - 即使在开始新 Activity 并清除返回堆栈后仍保留根 Activity

android - onActivityResult 和 FLAG_ACTIVITY_NEW_TASK : workaround?