viewpager使用navigation跳转失败问题

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里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值