2012-06-10 6 views
0

J'ai téléchargé un exemple de projet ViewPager de http://files.mail.ru/EZU6G4, et l'ai modifié pour mon application de test. Le projet que j'ai téléchargé utilise FragmentStatePagerAdapter comme argument dans mViewPager.setAdapter (mFragmentsAdapter) dans le fichier java de l'activité principale et fonctionne correctement.PagerAdapter vs FragmentStatePagerAdapter

Cependant, j'ai utilisé le même code mViewPager.setAdapter dans mon application, mais la partie "setAdapter" est redlined et le message suivant s'affiche.

« La méthode setAdapter (PagerAdapter) dans le ViewPager type n'est pas applicable pour les arguments (MyFragmentStatePagerAdapter) »

Je suis surpris que le même code fonctionne dans un projet, mais pas dans un autre. Aidez-moi s'il vous plaît à trouver pourquoi c'est. Pour votre référence, voici la définition de la méthode setAdapter dans le fichier ViewPager.java que les deux projets utilisent.

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

Votre 'MyFragmentStatePagerAdapter' étend-il la classe' FragmentStatePagerAdapter'? En outre, vérifiez vos importations sont correctes. –

+0

Oui c'est le cas. D'après ce que je vois, les importations sont correctes. Merci. –

Répondre

0

Cela est probablement lié à la bibliothèque de soutien Android. Si vous utilisez cela, assurez-vous d'utiliser les classes Fragment de la bibliothèque de support au lieu de la distribution Android standard.

Questions connexes