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

本文介绍了如何在Android项目中解决Fragment内的PopupWindow无法嵌套ViewPager和Fragment的问题,分享了四种解决方案,包括使用DialogFragment替换、避免直接在PopupWindow中用Fragment、在嵌套Fragment中获取子FragmentManager,以及重写Activity的findViewById方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值