问题描述
如何重新打开我之前使用 NavHostFragment 导航到的片段?
导航抽屉:
Home => Animals-Fragment
片段:
Animals-Fragment => Bunnies-Fragment => Temporarily change Bunny color to blue from red
导航抽屉:
Bunnies-Fragment => Home
现在我想要的是,当我点击 Animals 时,它会显示被修改的 Bunnies-Fragment。这意味着,我想要该 Fragment 的已加载实例。我该怎么做?
我使用以下代码在片段之间交换:
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);
解决方法
使用弹出窗口代替目的地
<action
android:id="@+id/action_ThirdFragment_to_FirstFragment"
app:popUpTo="@id/FirstFragment" />
要了解弹出窗口,我建议您观看此视频
https://www.youtube.com/watch?v=mLfWvSGG5c8
它以非常棒的方式解释了 PopUpTo 和 PopUpToInclusive