【问题标题】:Can I put a fragment on Backstack which hasn't been initialized yet?我可以在 Backstack 上放一个尚未初始化的片段吗?
【发布时间】:2015-05-23 19:36:18
【问题描述】:

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

有没有办法做到这一点?

编辑:

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

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

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

【问题讨论】:

    标签: android android-fragments back-stack


    【解决方案1】:

    没有

    想从 backstack 中删除一个片段并放入另一个片段

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

    并将另一个尚未创建的片段放在它的位置

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

    有没有办法做到这一点?

    确认号

    编辑

    是的是的是的

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

    你可以;使用FragmentManager & FragmentTransaction

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

    第一个是

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

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

    第三个是为了纵容。

    希望对先生有所帮助。

    【讨论】:

      【解决方案2】:

      您实际上无法做到这一点,但您可以做的是,将这些转变隐藏起来

      • 从片段 2 转到片段 3

      • 从 3 转到片段 4。

      隐藏的意思是,该用户没有看到这种情况发生(您可以将布局可见性设置为消失)。

      但是这样一来,Fragment 2 就会在堆栈中。

      要从堆栈中取出片段 2,请执行以下隐藏操作:

      • 回到1

      • 从 1 转到 3

      • 从 3 转到 4。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-27
        • 2019-03-19
        • 2021-10-27
        • 2021-12-29
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多