当我在viewpager中从第0项到第2项获得子视图时,它可以正常工作。当我尝试从3开始获取子视图时,它返回null。如何获取viewpager的所有当前所选子视图?
编辑:
View view = viewPager.getChildAt(viewPager.getCurrentItem());
当viewPager.getCurrentItem()到达3时,视图返回null。
答案 0 :(得分:2)
您需要访问Fragments
中使用的ViewPager
。
在这个回答https://stackoverflow.com/a/39274141/1559852中,我尝试解释如何修改ViewPager's
适配器o使您在ViewPager
中使用的片段可以访问。
在链接中实现代码后,您将能够访问您的片段及其观看次数。
为您的片段定义一个公共方法,如下所示:
public View getMyFragmentView(){
return this.mView();
}
最后在OnPageChangeLsitener
添加ViewPager
,例如以下代码。
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// Here's your instance
final YourFragment fragment =(YourFragment)yourPagerAdapter.getRegisteredFragment(position);
final View theViewYouWantToAccess = yourFragment.getMyView();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
修改:在您的ViewPager适配器中,您可以将Fragment
注册到SparseArray
@Override
public Fragment getItem(int position) {
final YourFragment fragment = new YourFragment();
// Register your fragment to Sparse Array here
registeredFragments.put(position, fragment);
return fragment;
}