2013-10-04 74 views
3

我想保存我的FragmentPagerAdapter的状态,以便在屏幕方向改变后重新使用它。不幸的是,saveState方法总是返回null。 我的适配器由一个ActionBar和两个Fragments组成。为什么FragmentPagerAdapter saveState始终为空?

这里北京时间我的方法调用

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    outState.putInt(FRAGMENT, viewPager.getCurrentItem() + 1); 
    outState.putParcelable(ADAPTER, fragmentTabAdapter.saveState()); 
    super.onSaveInstanceState(outState); 
} 

但outState适配器总是空。我不明白为什么。有没有什么特别的我错过了有关saveState的使用? 希望你能帮助我!

回答

1

这个例子中工作,如果该片段不被破坏

private int pageID; 

@Override 
public void onPause() { 
super.onPause(); 
pageID = mViewPager.getCurrentItem(); // 1 save 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

mViewPager.setCurrentItem(pageID, false); // 2 load 

} 
+0

我不认为这是我的问题的解决方案。我想保存整个适配器,而不仅仅是我的片段的状态。有了这个解决方案,我可以保存我的片段,但它们不会附加到新活动的适配器上。 – Omerixe