我從http://files.mail.ru/EZU6G4下載了一個示例ViewPager項目,並將其修改爲我的測試應用程序。我下載的項目使用FragmentStatePagerAdapter作爲主活動java文件中mViewPager.setAdapter(mFragmentsAdapter)的參數,並且工作得很好。PagerAdapter vs 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);
}
您的MyFragmentStatePagerAdapter擴展了FragmentStatePagerAdapter類嗎?另外,仔細檢查您的進口是否正確。 –
是的。據我所知,進口是正確的。謝謝。 –