Андроидный фрагмент onRestoreInstanceState

Я что-то упустил или у меня Fragment нет метода 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().