Ответ 1
Фрагменты не имеют метода onRestoreInstanceState
.
Вы можете достичь того же результата в onActivityCreated
, который получает пакет с сохраненным состоянием экземпляра (или null).
Проверьте исходный код здесь.
Я что-то упустил или у меня Fragment
нет метода onRestoreInstanceState()
? Если нет, как мне добиться достижения чего-то подобного?
Фрагменты не имеют метода onRestoreInstanceState
.
Вы можете достичь того же результата в onActivityCreated
, который получает пакет с сохраненным состоянием экземпляра (или null).
Проверьте исходный код здесь.
Я знаю, что вы приняли ответ, но вы должны прочитать официальную документацию о фрагментах, и в нем говорится (параграф "Обработка жизненного цикла фрагмента" ):
Вы можете сохранить состояние фрагмента с помощью Bundle, в случае, если процесс активности будет убит, и вам нужно восстановить состояние фрагмента при восстановлении активности. Вы можете сохранить состояние во время обратного вызова фрагмента onSaveInstanceState() и восстановить его во время либо onCreate(), onCreateView(), либо onActivityCreated()
Итак, вы можете использовать то, что вам подходит: onCreate()
, onCreateView()
или onActivityCreated()
В руководстве 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()
вызывается после возвращения фрагмента из стека.
onViewStateRestored
Fragment
является эквивалентом onRestoreInstanceState
of Activity
. Но он вызывается после onActivityCreated(Bundle)
и до onStart()
.