使用 jetpack 从 ViewPager2 导航到另一个片段

Navigate from ViewPager2 to another fragment using jetpack

我有一个activity,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

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

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

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

将动作设置为全局后,您可以像这样导航;

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

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

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

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