我会尽可能简短而简单地保持这个问题。
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
当前项为0和1时,返回子视图。但如果当前项为2,则返回null
。那是为什么?
编辑:让我重温一下自己。如何在任何给定项目位置获取ViewPager的子视图?
答案 0 :(得分:29)
事实证明getChildAt(int)
不是正确的做法。我所做的是检索ViewPager中使用的适配器并从那里找到我的观点:
adapter = mViewPager.getAdapter();
Fragment fragment = adapter.getItem(mViewPager.getCurrentItem());
View activeView = fragment.getView();
如前所述,除非通过setOffscreenPageLimit()
答案 1 :(得分:5)
您的查看寻呼机适配器最多可容纳2页,即2个视图/片段,其余部分都可以回收。在其他情况下,您未提及的是ViewPager中可能有2个页面/视图。
请查看mViewPager.setOffscreenPageLimit()
答案 2 :(得分:3)
将标签添加到Viewpager返回视图。
以下链接可以帮助您: https://stackoverflow.com/a/20186828/1271891
答案 3 :(得分:0)
在我努力寻找装饰机器人视图的方法时,我认为我已经为my blog中记录的OP问题定义了替代解决方案。我正在链接到它,因为代码似乎有点过多,无法包含所有内容。
我建议的解决方案:
null
。(这个问题非常简单this one我发布了the same answer}。
答案 4 :(得分:-1)
应该有多少儿童观点?
ViewPager也没有同时加载所有子项。只有它显示的那个和下一个。您可以使用mViewPager.setOffscreenPageLimit()
(例如3或4)将更多项目“预加载”到viewpager中。