如何从返回堆栈中删除我的 Activity setContentView?

How can I remove my Activity setContentView from the Back Stack?

在 Whosebug 上有一百个关于此的问题,但其中 none 个是关于我的具体问题。

我开始我的 Activity 使用此代码作为我 Activity class 中的静态函数:

fun startForResult(activity: Activity, code: Int) {
    val intent = Intent(activity, MyActivity::class.java)
    activity.startActivityForResult(intent, code)
    activity.overridePendingTransition(R.anim.none, R.anim.none)
}

当 MyActivity 开始时运行 onCreate 和其中的 setContentView(R.layout.activity)。这似乎在 Back Stack 上。 Activity 只有一个全屏的 FrameLayout 并且是我要加载的片段的 placeholder/frame。我的Activity很简单,3个fragments/screens就像一个精灵,全屏。一旦我的 activity OnCreate 完成,我的演示者就会使用如下代码加载第一个片段 FragmentA:

supportFragmentManager
    .beginTransaction()
    .replace(R.id.myContentFrame, FragmentA.newInstance())
    .addToBackStack(null)
    .commit()

这也会出现在返回堆栈中。用户按下下一步按钮,我的演示者运行此代码:

supportFragmentManager
    .beginTransaction()
    .replace(R.id.myContentFrame, FragmentB.newInstance())
    .addToBackStack(null)
    .commit()

当用户按下 FragmentB 上的后退按钮时,会将用户带回 FragmentA,这很好。当他们按下 FragmentA 上的后退按钮时,我的问题出现了,它会将他们带到一个清晰的屏幕,这显然是这个 setContentView(R.layout.activity) 事件,它已被添加到后退堆栈,我将返回它。所以我想要那个事件,Activity 的开始,它的不可见布局不添加到返回堆栈。当用户在 FragmentA 上并按下后退按钮时,我希望 Activity 结束。 我已经尝试了很多不同的方法来摆脱我后台堆栈中的这个 setContentView(R.layout.activity) 事务,但没有任何效果。我认为对此有一个简单的解决方案,比如设置一个 FLAG,但它让我望而却步。过去我已经重写了 OnBackPress 方法,我认为它会起作用,但我仍然很好奇是否有更简单的方法将第一个 (Activity) 项目从我的后堆栈中弹出而不需要我重写OnBackPressed.

我错过了什么?

我认为你不需要将片段A添加到返回堆栈。当在片段A中用户返回按Activity将完成!