【问题标题】:Navigate from ViewPager2 to another fragment using jetpack使用 jetpack 从 ViewPager2 导航到另一个片段
【发布时间】:2020-03-18 05:21:34
【问题描述】:

我有单个活动,FragmentHome 包含 viewpager2。在viewpager里面有FirstFragment。

当我想从 FirstFragment 导航到不在 viewpager2 中的 SecondFragment 时

它抛出

 java.lang.IllegalArgumentException: navigation destination com.example.mymessangerfcm:id/action_FirstFragment_to_SecondFragment is unknown to this NavController

亲爱的社区如何处理这样的导航,为什么会抛出异常?

【问题讨论】:

    标签: android android-jetpack-navigation android-viewpager2


    【解决方案1】:

    您应该使用全局操作。当您在 viewpager 中时,实际上您处于不同的导航中。所以,你应该让你的行动成为全球性的。您可以从官方网站查看全球行动:

    https://developer.android.com/guide/navigation/navigation-global-action

    将action设置为全局后,可以这样导航;

    findNavController().navigate(R.id.action_global_FirstFragment_to_SecondFragment)
    

    注意:如果您在执行此操作后没有看到全局操作,请重新构建您的项目。

    【讨论】:

    • 从技术上讲,您不需要全局操作,只需放置在目标片段内的常规操作即可。像往常一样使用findNavController().navigate() 和操作ID,它仍然可以工作!
    【解决方案2】:

    我在使用 ViewPager2 调用 Navigation.findNavController(view) 时遇到了 IllegalStateException。但是,相同的设置在旧的 ViewPager 上运行良好。

        java.lang.IllegalStateException: View android.widget.LinearLayout does not have a NavController set
    

    【讨论】:

    • 解决办法是什么?
    猜你喜欢
    • 2021-05-02
    • 2013-12-19
    • 2019-05-29
    • 2013-05-12
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多