我正在尝试使用自定义PagerAdapter实现ViewPager。我希望能够访问和修改ViewPager当前显示的片段。我在尝试调用我创建的方法并将其放入扩展FragmentStatePagerAdapter的类(来自Google dev)时遇到编译器错误。在ScreenSlidePagerAdapter类之外无法识别的方法是“getCurrentFragment()”。它在课堂上工作,但不在外面。
public class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
private int NUM_PAGES;
private Fragment mCurrentFragment;
public ScreenSlidePagerAdapter(FragmentManager fm, int NUM_PAGES) {
super(fm);
this.NUM_PAGES = NUM_PAGES;
}
@Override
public int getCount() {
return NUM_PAGES;
}
@Override
public Fragment getItem(int position) {
return new CalendarFragment();
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
if (getCurrentFragment() != object) {
mCurrentFragment = (Fragment) object;
}
super.setPrimaryItem(container, position, object);
}
public Fragment getCurrentFragment() {
return mCurrentFragment;
}
}
正如您所看到的,它在对象类本身内工作正常,但是当我在MainActivity中调用它时,我收到错误“无法解析方法'getCurrentFragment()'。
mViewPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager(), NUM_PAGES);
mViewPager.setAdapter(mPagerAdapter);
Fragment frag = mPagerAdapter.getCurrentFragment();
我该如何解决这个问题?我的方法是否也错误地获取当前显示的片段?
谢谢!
答案 0 :(得分:2)
如果没有完整的代码,我无法确定,但我怀疑mPagerAdapter
声明不正确。
应该是
ScreenSlidePagerAdapter mPagerAdapter;
不是
FragmentStatePagerAdapter mPagerAdapter;