Я что-то упустил или у меня Fragment нет метода onRestoreInstanceState()? Если нет, как мне добиться достижения чего-то подобного?
Андроидный фрагмент onRestoreInstanceState
Ответ 1
Фрагменты не имеют метода onRestoreInstanceState.
Вы можете достичь того же результата в onActivityCreated, который получает пакет с сохраненным состоянием экземпляра (или null).
Проверьте исходный код здесь.
Ответ 2
Я знаю, что вы приняли ответ, но вы должны прочитать официальную документацию о фрагментах, и в нем говорится (параграф "Обработка жизненного цикла фрагмента" ):
Вы можете сохранить состояние фрагмента с помощью Bundle, в случае, если процесс активности будет убит, и вам нужно восстановить состояние фрагмента при восстановлении активности. Вы можете сохранить состояние во время обратного вызова фрагмента onSaveInstanceState() и восстановить его во время либо onCreate(), onCreateView(), либо onActivityCreated()
Итак, вы можете использовать то, что вам подходит: onCreate(), onCreateView() или onActivityCreated()
Ответ 3
В руководстве Fragments ListFragment example вы можете найти:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
Что вы можете использовать следующим образом:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
// Restore last state for checked position.
mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
}
}
onActivityCreated() вызывается после возвращения фрагмента из стека.
Ответ 4
onViewStateRestored Fragment является эквивалентом onRestoreInstanceState of Activity. Но он вызывается после onActivityCreated(Bundle) и до onStart().