lijetlove
于 2018-05-04 18:24:32 发布
5472
收藏 8
分类专栏: android 文章标签: No view found for id PopupWindow中无法嵌套viewpager Frag
版权
android
专栏收录该内容
55 篇文章0 订阅
订阅专栏
最近在开发项目中,遇到了一个问题。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找的。如图
————————————————
版权声明:本文为优快云博主「lijetlove」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/u011814346/article/details/80198414