【问题标题】:How to avoid fragment recreation when we use Jetpack Navigation with FragmentContainerView?当我们将 Jetpack Navigation 与 FragmentContainerView 一起使用时,如何避免片段重新创建?
【发布时间】:2021-09-08 19:19:48
【问题描述】:

我有一个带有 FragmentContainerView 和 navGraph 的活动。

Navigation Version 2.4.0-alpha01 发布后,onNavDestinationSelected()、BottomNavigationView.setupWithNavController() 和 NavigationView.setupWithNavController() 的 NavigationUI 方法现在可以自动保存和恢复弹出目的地的状态,支持多个无需任何代码更改即可返回堆栈。

是否有任何解决方法可以让 FragmentContainerView 出现类似行为

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/homeFragmentContainerView"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/home_navigation" />

【问题讨论】:

  • 您不会“避免娱乐”,因为娱乐是您必须处理的 Android 的自然组成部分。如果您是saving state,因为您必须处理配置更改和进程死亡,那么您的状态在使用导航时也已经保存和恢复。

标签: android navigation android-jetpack android-jetpack-navigation android-navigation-graph


【解决方案1】:

FragmentContainerView 已经可以与多个返回堆栈一起使用。

Murat YenerMedium article 中有一个很好的概述,他展示了如何在 activity_main 中使用 FragmentContainerView 时为您的项目实现多个返回堆栈。 p>

就我而言,我实现了这一点,但多个后退堆栈仍然不起作用。我必须从我的菜单项中删除android:menuCategory="secondary",才能使多个后台堆栈起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-13
    • 2017-12-21
    • 2020-07-14
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 2021-07-17
    相关资源
    最近更新 更多