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

时间:2020-03-18 05:21:34

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

我只有一个活动,FragmentHome包含viewpager2。在viewpager内部有FirstFragment。

enter image description here

当我想从FirstFragment导航到viewpager2中没有的SecondFragment时

enter image description here

它抛出

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

亲爱的社区如何处理这种导航,以及为什么引发异常?

2 个答案:

答案 0 :(得分:1)

您应该使用“全局操作”。当您位于viewpager内部时,实际上您处于另一个导航中。因此,您应该将自己的行为设为全球性。您可以从官方网站上查看“全球行动”:

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

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

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

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

答案 1 :(得分:0)

当我用ViewPager2调用Navigation.findNavController(view)时,出现在IllegalStateException下面。但是,相同的设置可以在旧的ViewPager上正常工作。

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