2012-06-10 64 views
0

我從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); 
} 
+0

您的MyFragmentStatePagerAdapter擴展了FragmentStatePagerAdapter類嗎?另外,仔細檢查您的進口是否正確。 –

+0

是的。據我所知,進口是正確的。謝謝。 –

回答

0

這可能與Android的支持庫。如果您正在使用它,請確保您使用支持庫中的Fragment類,而不是標準的Android發行版。