我可以将尚未初始化的片段放在 Backstack 上吗?

Can I put a fragment on Backstack which hasn't been initialized yet?

我想从后台堆栈中删除一个片段并将另一个尚未创建的片段放在它的位置。下面是我想要实现的图片。

有什么办法可以做到吗?

编辑:

正如@Elltz 所指出的,这是不可能的。所以我的问题变成了

  1. 是否可以销毁返回堆栈中的最后一个片段?

  2. 我可以处理手动按下的后退按钮以提供与后退堆栈上的内容不同的片段吗?

没有没有 !

want to remove a fragment from backstack and put another fragment

您无法手动重新排列 BackstackEntry。你只能听,观察和调用它。查看 PopBackstack(String name, int flags) 因此 第一个没有

and put another fragment in its place which hasn't been created yet

你的意思是 null Fragment ?..你不能同时将引用分配给 null 对象,第二个没有

Is there any way to accomplish this?

一个确认号

编辑

Is it possible to destroy the last fragment from back stack?

可以;使用 FragmentManager & FragmentTransaction

FragmentManager fm = FragmentActivity.getSupportFragmentManager();
fm.beginTransaction().remove(
               fm.getBackStackEntryAt(fm.getBackStackEntryCount()-1););

第一个是

Can I handle the back button pressed manually to provide a different fragment than what is on the back stack?

是的,你可以,但你必须在你的 FragmentActivityActivity 中这样做,所以你需要一些 interface 或你自己的逻辑,或者 使用您自己的逻辑实现 BackStackChangedListener,这实际上是我正在谈论的 interface 逻辑,只要 Fragment 离开或离开 Backstack,此侦听器就会收到通知,因此 第二个是

第三个是为了呵护。

希望对先生有所帮助。

你实际上不能这样做,但你可以做的是,隐藏这些转换

  • 从片段2转到片段3

  • 从片段 3 转到片段 4。

隐藏是指用户看不到这种情况(您可以将布局可见性设置为消失)。

但是这样,片段 2 就会在堆栈中。

从栈中取出片段2,进行如下隐藏操作:

  • 回到1

  • 从 1 转到 3

  • 从 3 转到 4。

希望对您有所帮助。