Intereting Posts
Обновление Android SDK: «Не удалось переместить папку». Как вызвать метод в действии с помощью службы Самый точный API местоположения Android Как удалить папки в sdcard файлового обозревателя в android «Службы Google Play обновляются» в API Карт Google. Android Webkit: Абсолютно позиционированные элементы не уважают z-index Android: что такое inputType для имени пользователя Как использовать последнюю версию gradle в Android Studio Java.lang.IllegalStateException: ActionBarImpl может использоваться только с совместимым макетом оформления окна Переместить LatLng 5 метров в направлении другого LatLng Android поворачивает изображение, я не могу установить конечную позицию изображения в onAnimationEnd () Почему WifiConfiguration.BSSID всегда имеет значение null? Как сделать линию с закругленными (гладкими) углами с AndroidPlot Создание уникального Android-идентификатора на глобальном уровне Design lib – CoordinatorLayout / CollapsingToolbarLayout с GridView / listView

Фрагмент onSaveInstanceState () никогда не вызывается

Я пытаюсь сохранить данные в onSaveInstanceState () Fragment, но метод никогда не вызывается.

Может кто-нибудь помочь?

public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ScrollView content = (ScrollView) inflater.inflate(R.layout.content, container, false); // More stuff return content; } @Override public void onSaveInstanceState(Bundle icicle) { // NEVER CALLED super.onSaveInstanceState(icicle); //More stuff } } 

Solutions Collecting From Web of "Фрагмент onSaveInstanceState () никогда не вызывается"

Я, наконец, понял проблему, по крайней мере, в моем случае. У меня был переопределенный onSaveInstanceState в моем FragmentActivity, который не вызывал super.onSaveInstanceState(Bundle outState) . Как только я добавил, что внутри, Fragment.onSaveInstanceState(Bundle outState) функционировал нормально.

Я столкнулся с тем же вопросом с вами и попробовал метод onSaveInstanceState (), но не работал.

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

Здесь находится справочный документ от Google. http://developer.android.com/guide/components/tasks-and-back-stack.html#ActivityState

Одна вещь, которую нужно проверить, – убедиться, что Activity, содержащий фрагмент, не препятствует перезапуску, включая флаг android:configChanges в AndroidManifest.xml.

В некоторых ситуациях может оказаться полезным использовать аргументы фрагмента вместо savedInstanceState . Дальнейшее объяснение .

Попробуйте вызвать FragmentManager # saveFragmentInstanceState и Fragment # setInitialSavedState в действии . Вы вызываете saveFragmentInstanceState, тогда фреймворк будет вызывать onSaveInstanceState. И вы вызываете setInitialSavedState, тогда фреймворк будет вызывать onCreateView без нулевого аргумента 'Bundle savedInstanceState'.

Попробуйте вызвать setRetainInstance(true) в onCreate(Bundle savedInstanceState) .

Ничто из этого не помогло мне. Я хотел, чтобы onSaveInstanceState вызывался каждый раз, когда я выталкивал другой фрагмент в стек, поэтому я просто добавил простой вызов этого метода в onPause (моего фрагмента).

 @Override public void onPause() { super.onPause(); onSaveInstanceState(new Bundle()); }