2013-10-04 2 views
3

Я хочу сохранить состояние своего FragmentPagerAdapter, поэтому я могу его повторно использовать после изменения ориентации экрана. К сожалению, метод saveState всегда возвращает null. Мой адаптер состоит из ActionBar с двумя Fragments.Почему FragmentPagerAdapter saveState всегда имеет значение null?

Вот ист мой метод вызова

@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