Android:无法从自定义PagerAdapter

时间:2015-10-09 18:31:42

标签: java android

我正在尝试使用自定义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();

我该如何解决这个问题?我的方法是否也错误地获取当前显示的片段?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果没有完整的代码,我无法确定,但我怀疑mPagerAdapter声明不正确。

应该是

ScreenSlidePagerAdapter mPagerAdapter;

不是

FragmentStatePagerAdapter mPagerAdapter;