我有一个问题。我有一个ViewPager
和一个用于它的FragmentPagerAdapter
。
我需要做的就是从我的ViewPager
中调用一些方法,当此页面被选中时,该方法需要在我的Fragment
中执行。
我试图将所有的Fragment
都放在适配器里的List
中,但问题是,当我旋转设备时,适配器会使用之前的片段。新的片段在旋转后被创建了,我拥有它们的列表,但不知道如何访问之前的片段。我只有对新片段的引用。
这是我的适配器:
public class MainPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList;
public MainPagerAdapter(FragmentManager fm) {
super(fm);
fragmentList = new ArrayList<Fragment>();
fragmentList.add(new TaskPageFragment());
fragmentList.add(new HistoryFragment());
fragmentList.add(new TestFragment());
}
@Override
public Fragment getItem(int i) {
return fragmentList.get(i);
}
@Override
public int getCount() {
return 3;
}
}
当我试图访问仅作为对象创建的片段时,无法访问Activity上下文。
Fragment fragment = pagerAdapter.getItem(i);
if (fragment instanceof SelectionListener) {
((SelectionListener)fragment).onTabSelected();
}
这里展示了onTabSelected()
方法的调用。它是我在ViewPager
中实现到每个片段的接口,当屏幕旋转后调用该方法时,我会得到一个空的Context
。