关于No view found for id 0x7f080135 (com.xxx.xxx:id/viewpager) for fragment PopupWindow

最近在开发项目中,遇到了一个问题。PopupWindow中无法嵌套viewpager+Fragment,现在进行总结一下。

问题描述:在Fragment中弹出一个PopupWindow,PopupWindow中用viewpager加载多个Fragment时出现上面问题。

网上搜的都是那些什么没有设置id之类的东西,或者getSupportFragmentManager()替换成getChildFragmentManager()之类的,但是这个问题不是在这里。调试了源码看到FragmentManager是属于activity的,而popwindow是使用了其他的layout,所以FragmentManager找不到viewpager的id。

问题原因分析:因为FragmentAdapter传入的是Activity的FragmentManger,所以默认是在Activity的布局xml中寻找ViewPager的定义,但是实际上它是在弹出的View里定义的。

解决方法:前三个都是网上推荐的,本人用的是方法二;后来自己研究了一下,得出方法四。

方法一:放弃使用PopupWindow使用DialogFragment

方法二:不要用fragment在popupwindow中 ,可以换成view在pageadaper中

方法三:既然在popwindow获取不了对应的FragmentManager,换个思路,先在popwindow中放一个fragment,再 在这个fragment中放viewpager+fragment,fragment中获取的FragmentManager,使用getChildFragmentManager()。问题解决了。

方法四:重写activity的findviewbyid 方法,fragment的寻找id的方式是用activity找的。如图





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值