【发布时间】:2021-05-02 21:13:07
【问题描述】:
如何重新打开之前使用 NavHostFragment 导航到的片段?
导航抽屉:
Home => Animals-Fragment
片段:
Animals-Fragment => Bunnies-Fragment => Temporarily change Bunny color to blue from red
导航抽屉:
Bunnies-Fragment => Home
现在我想要,当我点击动物时,它会显示被改变的兔子片段。这意味着,我想要该片段的已加载实例。我该怎么做?
我正在使用以下代码在片段之间进行交换:
NavHostFragment.findNavController(p)
.navigate(R.id.action_navigation_animals_to_bunniesFragment, bundle);
我的 HomeActivity 在它的 onCreate() 中有这个:
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_animals)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
【问题讨论】:
-
片段是否包含一些需要重新打开的数据?如果是,请将它们移至 ViewModel。并且 ViewModel 应该具有活动范围或主图范围(这意味着即使片段被破坏,ViewModel 也应该存活)。然后当你重新打开片段时,只显示从 ViewModel 加载的数据。
-
您找到解决方案了吗?我也有同样的问题。
-
遗憾的是没有。我希望有人能找到一个^^
标签: android android-fragments navigation android-actionbar