Фрагмент onSaveInstanceState () никогда не вызывается

Я пытаюсь сохранить данные в onSaveInstanceState () Fragment, но метод никогда не вызывается.

Может кто-нибудь помочь?

public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ScrollView content = (ScrollView) inflater.inflate(R.layout.content, container, false); // More stuff return content; } @Override public void onSaveInstanceState(Bundle icicle) { // NEVER CALLED super.onSaveInstanceState(icicle); //More stuff } } 

Solutions Collecting From Web of "Фрагмент onSaveInstanceState () никогда не вызывается"

Я, наконец, понял проблему, по крайней мере, в моем случае. У меня был переопределенный onSaveInstanceState в моем FragmentActivity, который не вызывал super.onSaveInstanceState(Bundle outState) . Как только я добавил, что внутри, Fragment.onSaveInstanceState(Bundle outState) функционировал нормально.

Я столкнулся с тем же вопросом с вами и попробовал метод onSaveInstanceState (), но не работал.

Я думаю, что onSaveInstanceState () работает только для сценария, который пользователь перескакивает с одного действия на другой и обратно, он не работает в сценарии, который пользователь перескакивает между фрагментами в одном и том же действии.

Здесь находится справочный документ от Google. http://developer.android.com/guide/components/tasks-and-back-stack.html#ActivityState

Одна вещь, которую нужно проверить, – убедиться, что Activity, содержащий фрагмент, не препятствует перезапуску, включая флаг android:configChanges в AndroidManifest.xml.

В некоторых ситуациях может оказаться полезным использовать аргументы фрагмента вместо savedInstanceState . Дальнейшее объяснение .

Попробуйте вызвать FragmentManager # saveFragmentInstanceState и Fragment # setInitialSavedState в действии . Вы вызываете saveFragmentInstanceState, тогда фреймворк будет вызывать onSaveInstanceState. И вы вызываете setInitialSavedState, тогда фреймворк будет вызывать onCreateView без нулевого аргумента 'Bundle savedInstanceState'.

Попробуйте вызвать setRetainInstance(true) в onCreate(Bundle savedInstanceState) .

Ничто из этого не помогло мне. Я хотел, чтобы onSaveInstanceState вызывался каждый раз, когда я выталкивал другой фрагмент в стек, поэтому я просто добавил простой вызов этого метода в onPause (моего фрагмента).

 @Override public void onPause() { super.onPause(); onSaveInstanceState(new Bundle()); }