2013-05-02 31 views
0

我有一個ViewPager加上一個FragmentStatePager,大約有8個碎片連接到它。該應用程序被設計爲一個嚮導。用戶在一頁上輸入信息,然後轉到下一頁等等。現在我遇到收集信息和恢復信息的問題。當用戶向前滑動我怎樣才能保存我的信息,同樣,當我回頭看看哪些函數總是被調用,以便我可以從我的對象讀取數據並填充屏幕UI?我已經嘗試過OnSaveInstanceState,但幾乎沒有被調用過。有時稱OnResume不是。另外請注意我正在使用RoboGuice將視圖注入到我的片段中,所以ui字段僅在OnViewCreated函數之後可用。還要注意我的八個片段都實現了以下界面。在這兩個函數中,應用程序級別singelton可以讀取或讀取並訪問片段中的UI字段。我無法找到將這些功能插入的位置?任何建議都會非常有用。我會鼓勵setOnPageChangeListener,但在實際頁面對用戶可見之前調用onPageSelected事件,並且可能會導致空指針異常,因爲我的RoboGuice注入沒有真正準備好。ViewPager與FragmentStatePager

public interface FragmentState { 
    public void saveFragementState(); 
    public void restoreFragementState(); 
} 

回答

0

您應該使用ViewPager.setOffscreenPageLimit(k)從N-K ViewPager的所有片段緩存到N + K。

然後你可以使用onPageSelected()安全:

pager.setOnPageChangeListener(new OnPageChangeListener() { 
     public void onPageScrollStateChanged(int state) { 

     } 

     public void onPageScrolled(int position, float positionOffset, 
       int positionOffsetPixels) { 
     } 

     public void onPageSelected(int position) { 
      fragments.get(position).doThings(); 
     } 
    });