2017-04-20 56 views
0

我正在使用FragmentStatePagerAdaptergetItem(int position)返回錯誤的位置。我有5個片段。這是位置,當我改變片段:FragmentStatePagerAdapter在getItem中返回錯誤的位置

Fragment0 -> Fragment1: position = 2 
Fragment1 -> Fragment2: position = 3 
Fragment2 -> Fragment3: position = 4 
Fragment3 -> Fragment4: getItem is not called! 
Fragment4 -> Fragment3: position = 2 
Fragment3 -> Fragment2: position = 1 
Fragment2 -> Fragment1: position = 0 
Fragment1 -> Fragment0: getItem is not called! 

這裏是我的適配器代碼:

import android.content.Context; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 

public class AppFragmentPageAdapter extends FragmentStatePagerAdapter { 
    final int PAGE_COUNT = 5; 
    private String tabTitles[] = new String[] { "اخبار", "حقیقت‌سنج", "ویدیوها", "زندگی‌نامه", "برنامه‌ها" }; 
    private Context context; 

    public AppFragmentPageAdapter(FragmentManager fm, Context context) { 
     super(fm); 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return PAGE_COUNT; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case (0): 
       return NewsFragment.newInstance(position); 
      default: 
       return VideosFragment.newInstance(position); 
     } 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return tabTitles[position]; 
    } 
} 
+0

我不明白'Fragment0 - > Fragment1:position = 2'是什麼意思。這是在你的logcat輸出?如果是這樣,請顯示創建此輸出的代碼並解釋您期望的不同。 –

+0

顯示的代碼僅創建兩個片段。只要您仍然可以說明您所詢問的整體概念,就沒有問題。 –

回答

3

這是正常的行爲。默認情況下,FragmentStatePagerAdapter爲當前顯示的片段及其鄰居保留鏈接。首先創建Fragment0和Fragment1。當你滑動到Fragment1時,他將創建Fragment2併爲此調用getItem(2)。滑動到Fragment2後,適配器將銷燬Fragment0並創建Fragment3。

相關問題