2013-12-23 3 views
0

Вот мой код:Сохранение и восстановление состояния экземпляра с фрагментами

@Override 
public void onSaveInstanceState(Bundle savedInstanceStateBundle) 
{ 
    savedInstanceStateBundle.putInt(AVERAGE_SESSION_VALUE_HOLDER, averageSessionSeek.getProgress()); 
    savedInstanceStateBundle.putInt(CONFIDENCE_VALUE_HOLDER, confidenceSeek.getProgress()); 
    savedInstanceStateBundle.putInt(CONVERSION_TIME_VALUE_HOLDER, conersionTimeSeek.getProgress()); 

} 

Выше код принадлежит InputFragment.java, который проходит Fragment. Вышеупомянутые методы сохраняют состояние экземпляров, поэтому, когда пользователь переходит от этого Fragment и возвращается к нему, экземпляры восстанавливаются. Я попробовал это с кодом ниже

@Override 
public void onRestoreInstanceState(Bundle savedInstanceStateBundle) 
{ 

} 

Но это не удается, скомпилируйте ошибки. Итак, как я могу перезагрузить состояния экземпляра в Fragments?

ответ

0

Фрагменты не имеют onRestoreInstanceState ... это onActivityCreated() (по техническим причинам это было ужасно реализовано этим путем командой Android).

См. this thread на StackOverflow для получения дополнительной информации.

0

Документов для onSaveInstanceState сказать:

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

Это соответствует Activity.onSaveInstanceState (Bundle), и большинство обсуждений здесь также применимо.

Вместо onSaveInstanceState() использовать onActivityCreated (Bundle).

+0

Итак, где я должен положить код восстановления? –

+0

в onActivityCreated (Bundle), см. Http://developer.android.com/reference/android/app/Fragment.html#onActivityCreated(android.os.Bundle) – Melquiades

Смежные вопросы