我从http://files.mail.ru/EZU6G4下载了一个示例ViewPager项目,并为我的测试应用程序修改了它。我下载的项目在主活动java文件的mViewPager.setAdapter(mFragmentsAdapter)中使用FragmentStatePagerAdapter作为参数,并且运行良好。
然而,我在我的应用程序中使用了相同的mViewPager.setAdapter代码,但"setAdapter“部分是红线的,我得到了以下消息。
“类型ViewPager中的方法setAdapter(PagerAdapter)不适用于参数(MyFragmentStatePagerAdapter)”
令我惊讶的是,相同的代码在一个项目中可以工作,而在另一个项目中却不能。请帮我找出原因。
作为参考,下面是两个项目都使用的ViewPager.java文件中的setAdapter方法定义。
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
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);
}发布于 2012-08-13 16:18:58
这可能与Android支持库有关。如果您正在使用它,请确保您使用的是support lib中的Fragment类,而不是标准的Android发行版。
https://stackoverflow.com/questions/10967435
复制相似问题