首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PagerAdapter vs FragmentStatePagerAdapter

PagerAdapter vs FragmentStatePagerAdapter
EN

Stack Overflow用户
提问于 2012-06-10 16:50:17
回答 1查看 2.2K关注 0票数 0

我从http://files.mail.ru/EZU6G4下载了一个示例ViewPager项目,并为我的测试应用程序修改了它。我下载的项目在主活动java文件的mViewPager.setAdapter(mFragmentsAdapter)中使用FragmentStatePagerAdapter作为参数,并且运行良好。

然而,我在我的应用程序中使用了相同的mViewPager.setAdapter代码,但"setAdapter“部分是红线的,我得到了以下消息。

“类型ViewPager中的方法setAdapter(PagerAdapter)不适用于参数(MyFragmentStatePagerAdapter)”

令我惊讶的是,相同的代码在一个项目中可以工作,而在另一个项目中却不能。请帮我找出原因。

作为参考,下面是两个项目都使用的ViewPager.java文件中的setAdapter方法定义。

代码语言:javascript
复制
public void setAdapter(PagerAdapter adapter) {
    if (mAdapter != null) {
        mAdapter.setDataSetObserver(null);
        mAdapter.startUpdate(this);
        for (int i = 0; i < mItems.size(); i++) {
            final ItemInfo ii = mItems.get(i);
            mAdapter.destroyItem(this, ii.position, ii.object);
        }
        mAdapter.finishUpdate(this);
        mItems.clear();
        removeAllViews();
        mCurItem = 0;
        scrollTo(0, 0);
    }

    mAdapter = adapter;

    if (mAdapter != null) {
        if (mObserver == null) {
            mObserver = new DataSetObserver();
        }
        mAdapter.setDataSetObserver(mObserver);
        mPopulatePending = false;
        if (mRestoredCurItem >= 0) {
            mAdapter.restoreState(mRestoredAdapterState, mRestoredClassLoader);
            setCurrentItemInternal(mRestoredCurItem, false, true);
            mRestoredCurItem = -1;
            mRestoredAdapterState = null;
            mRestoredClassLoader = null;
        } else {
            populate();
        }
    }

ViewPagerActivity.java

代码语言:javascript
复制
public class ViewPagerActivity extends FragmentActivity {


public static final String TAG = "ViewPagerActivity";
private MyFragmentStatePagerAdapter mFragmentsAdapter ;
private ViewPager mViewPager ;

@Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setContentView(R.layout.main);

            mFragmentsAdapter = new MyFragmentStatePagerAdapter(getSupportFragmentManager());
            mViewPager = (ViewPager) findViewById(R.id.myfivepanelpager);

            mViewPager.setAdapter(mFragmentsAdapter);
}
EN

回答 1

Stack Overflow用户

发布于 2012-08-13 16:18:58

这可能与Android支持库有关。如果您正在使用它,请确保您使用的是support lib中的Fragment类,而不是标准的Android发行版。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10967435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档