фрагмент Android на RestoreInstanceState - PullRequest
112 голосов
/ 24 марта 2011

Я что-то упустил или у Fragment нет метода onRestoreInstanceState()?Если нет, то как мне достичь чего-то подобного?

Ответы [ 4 ]

188 голосов
/ 24 марта 2011

Фрагменты не имеют onRestoreInstanceState метода.

Вы можете достичь того же результата в onActivityCreated, который получает пакет с сохраненным состоянием экземпляра (или ноль).

Проверьте исходный код здесь .

39 голосов
/ 10 декабря 2014

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

Вы можете сохранить состояние фрагмента, используя Bundle, в случае, если процесс действия завершен, и вам необходимо восстановить состояние фрагмента при повторном создании действия.Вы можете сохранить состояние во время обратного вызова фрагмента onSaveInstanceState () и восстановить его во время onCreate (), onCreateView () или onActivityCreated ()

Итак, вы можете использовать то, что вам больше подходит: onCreate(), onCreateView() или onActivityCreated()

25 голосов
/ 07 мая 2014

В ListFragment руководства фрагментов пример вы можете найти:

@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() вызывается послефрагмент возвращается из стека.

11 голосов
/ 25 июня 2016

onViewStateRestored из Fragment эквивалентно onRestoreInstanceState из Activity. Но он вызывается после onActivityCreated(Bundle) и до onStart().

...