提问者:小点点

如何使用BottomNavigationView和Jetpack导航与片段和不破坏片段视图


在我的应用程序的主要活动中,我有BottomNavigationView和四个项目/选项卡。每个选项卡都有自己的片段。我使用Jetpack导航组件在这些片段之间导航。

当我使用NavController.navigate(...)导航到另一个片段时,以前的片段视图正在被销毁。我的一个片段包含地图视图,这使得片段视图的创建操作繁重。当用户更改BottomNavigationView选项卡时,在使用地图视图导航到片段时,旧的Android手机上有明显的延迟。我可以修改NavController不销毁视图,而是隐藏并显示视图吗?

TLDR:如何更改Jetpack导航以不破坏fragment的视图。相反,只是隐藏

在这个主题中已经有了一些讨论,但由于Jetpack导航库已经发展了很多,大多数解决方案已经过时。Jetpack Navigation 2.4.0支持多次回退等,但据我所知,没有官方解决方案来保持片段视图的活力?


共1个答案

匿名用户

我有同样的问题,仍然无法在导航文档或示例中找到解决方案。

现在我使用旧的方法,使用support portFragmentManager添加和添加ToBackStack,这样我就可以保持以前的片段不被破坏。只是一种解决方法,希望有人能提供更好的解决方案。

我的示例代码如下:

val fragment = CreateGroupWebFragment()
            activity?.supportFragmentManager?.beginTransaction()
                ?.add(R.id.main_tab_nav_host_fragment, fragment, fragment.TAG)
                ?.addToBackStack(fragment.TAG)
                ?.commit()