微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NavHostFragment:使用导航抽屉重新打开更改的片段

如何解决NavHostFragment:使用导航抽屉重新打开更改的片段

如何重新打开我之前使用 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。