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

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

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

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
    }

}
4b9b3361

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

67
ответ дан 06 янв. '12 в 4:34
источник

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

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

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

19
ответ дан 03 янв. '14 в 0:14
источник

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

6
ответ дан 14 дек. '11 в 15:04
источник

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

-1
ответ дан 17 окт. '13 в 11:34
источник