我将尽可能使问题简短而简单。
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
当前项为 0 和 1 时返回子视图。但如果当前项为 2,则返回null
。这是为什么?
编辑:让我改写一下自己。如何在任何给定项目位置获取 ViewPager 的子视图?
我将尽可能使问题简短而简单。
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
当前项为 0 和 1 时返回子视图。但如果当前项为 2,则返回null
。这是为什么?
编辑:让我改写一下自己。如何在任何给定项目位置获取 ViewPager 的子视图?
事实证明getChildAt(int)
这不是正确的方法。我所做的是检索 ViewPager 中使用的适配器并从那里找到我的视图:
adapter = mViewPager.getAdapter();
Fragment fragment = adapter.getItem(mViewPager.getCurrentItem());
View activeView = fragment.getView();
如前所述,除非另有说明,否则 viewPager 将仅包含当前子项和相邻子项(currentItem() +/- 1)setOffscreenPageLimit()
您的视图寻呼机适配器最多可容纳 2 个页面,即 2 个视图/片段,其余的将被回收。在其他情况下,您没有提到的是您可能在 ViewPager 中有 2 个页面/视图。
请看mViewPager.setOffscreenPageLimit()
将标签添加到 Viewpager 返回视图。
以下链接将为您提供帮助: https ://stackoverflow.com/a/20186828/1271891
在我努力寻找装饰 android 视图的方法期间,我认为我为我记录的 OP 问题定义了替代解决方案在我努力寻找装饰 android 视图的方法期间,我认为我为我在博客。我正在链接到它,因为代码似乎有点太多,无法在这里包含所有内容。
我提出的解决方案:
null
如果当前未加载此视图或相应的视图,他将被返回。应该有多少子视图?
ViewPager 也不会同时加载所有子项。只有它显示的一个和下一个。您可以使用mViewPager.setOffscreenPageLimit()
to,例如 3 或 4,将更多项目“预加载”到 viewpager 中。