2015-11-02 158 views
3

我有一個問題。我有一個片段,其中包含viewpager裏面。對於viewpager我使用FragmentPagerAdapter擴展。每個pager fragment內有recycler views。 問題是我無法在屏幕旋轉後recycler viewsviewpager恢復滾動位置。我認爲這個問題在recyclerview,但很快我發現在viewpager內部的屏幕旋轉片段正在重新創建之後,所以調用了onCreate()onDestroy(),即使它們不應該。我也試過使用onSaveInstanceState(bundle),發現onCreateView()裏面的這個bundle總是空的。所以我該怎麼做? This話題沒有幫助我。片段內的ViewPager不會恢復子片段的狀態

+0

你可以嘗試使用mViewPager.setOffscreenPageLimit(limit); – dex

+0

@dex,我試過。它並沒有幫助我。實際上,它不應該是因爲viewpager在我滑動時保存了片段的狀態,但是當我旋轉屏幕時,位置就會丟失。對不起我的英語不好 –

回答

3

好吧,我找到了答案。問題在於我)。有層次結構:MainActivity帶有框架佈局的片段 - PagerFragment包含viewpager - viewpager中的fagments。問題是,屏幕旋轉之後的活動中我是百達更換PagerFragment,如:

android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
fragment = new PagerFragment(); 
fragmentTransaction.replace(R.id.fragment_container, fragment); 
fragmentTransaction.commit(); 

但我應該這樣做:

Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container); 
if (fragment == null) { 
     android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     fragment = new PagerFragment(); 
     fragmentTransaction.replace(R.id.fragment_container, fragment); 
     fragmentTransaction.commit(); 
} 

這完全是我的錯,我很慚愧。對不起。