viewpager2使用navigation跳转失败
1、项目背景
如图,articleListFragment
包含viewpager2,需要实现两个界面的切换(绿标①和蓝标②),绿标①中有一个按钮,点击之后需要跳转到界面3(绿标③)
2、错误
我使用了绿色箭头的action,as提示warning,且跳转无效
binding.tvGotoSubsc.setOnClickListener(
Navigation.createNavigateOnClickListener(R.id.action_articleSubscFragment_to_keywordSubscFragment));
提示信息显示
Navigation.createNavigateOnClickListener(...)
方法的返回状态被忽略
问题就出现在这里。
分析问题可以想到,如果是在viewpager的fragment里跳转的话,则新界面也会展示在viewpager里,而界面3和界面1可能不是同一个层次的(界面3和包含viewpager2的界面是同一层次),这样的话跳转就会有问题,错误可能就是由此造成的。但是我也不明白,是什么决定了这些界面是否在同一个层次。
3、解决方式
所以解决方式就是从含有viewpager的主界面跳转到子界面。(即上图橙色箭头所示)
binding.tvGotoSubsc.setOnClickListener(
Navigation.createNavigateOnClickListener(R.id.action_articleListFragment_to_keywordSubscFragment) );
那么,根据上面的分析可以想到,为什么实现的效果不是界面3和界面1一样也展示在viewpager里呢?可能就是级别不一样。那么要想实现这个效果,我们可以手动把它们级别设置为一样,具体做法(瞎猜的):可以另外画一个nav_graph,把界面3和界面1放在一起,然后再嵌套到viewpager所在的nav_graph里。