我有几个片段,它们是用ViewPager
。我添加一个addOnPageChangeListener
to the ViewPager
在 MainActivity 中onCreate
给出所选片段位置的方法。
尽管我通过声明防止碎片自我毁灭setOffscreenPageLimit
,我仍然没有弄清楚如何从 MainActivity 访问片段,只需使用findViewById
返回空对象异常。
我想做的事:
我想访问片段的元素,例如布局和滚动视图,在OnPageListener
of the ViewPager
:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int i) {
if(i == 0) {
// Do something with the first fragment.
} else if(i == 1) {
// Do something with the second fragment.
}
}
}
The ViewPager
uses a FragmentPagerAdapter
:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return Fragment1.newInstance(position);
case 1:
return Fragment2.newInstance(position);
case 2:
return Fragment3.newInstance(position);
case 3:
return Fragment4.newInstance(position);
default:
throw new IllegalArgumentException();
}
}
@Override
public int getCount() {
return 4;
}
}
添加如下:
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mSectionsPagerAdapter);
~
或者我应该改变我的方法?
如果这种设计无法实现访问片段,那么有效的替代路线是什么?
我尝试过实施ViewPager.onPageChangeListener
在习俗中ViewPager
,但这似乎不是一个好的选择。
我可以处理各自片段中的元素,但这是一个乏味的过程并且难以维护,这就是我寻找一种同时处理它们的方法的原因。
我知道以前曾有人问过类似的问题,但我没有在其中找到解决方案。