Intereting Posts
Android M странные общие предпочтения Нужно вычислить вектор вращения из данных Sensor.TYPE_ORIENTATION Android: GoogleAuthUtil.getToken – где должен быть объект учетной записи? Выравнивание вправо и влево с линейным или относительным преобразованием с усеченным текстом? Включение поддержки MultiDex в Android для достижения 65K + методов в Eclipse Просмотр рецензента или переориентация с картонным SDK на Unity Как добавить подключение к приложениям в Phonebook / Contacts, как Whatsapp и Viber? Не удалось выполнить компиляцию под Android Studio 3.0 Canary 1 На Android, как я могу сделать странные области отсечения? Внедрение пользовательских колес или игровых автоматов Android Лучшая практика: AsyncTask во время изменения ориентации Исходный шрифт среды выполнения Runtime не найден Значок изображения в раскрывающемся списке в андроиде Как перемещаться между страницами в приложении PhoneGap? Служба Android onCreate вызывается несколько раз, не вызывая onDestroy

OnSaveInstanceState не сохраняет мои значения (onCreate input Bundle всегда равно null)

Сохранение пучка (активность A):

@Override protected void onSaveInstanceState(Bundle outState) { outState.putString("test", "value"); super.onSaveInstanceState(outState); } 

Переход к активности B;

 startActivity(new Intent(getBaseContext(), B.class)); 

Возвращаясь к активности A:

 startActivity(new Intent(getBaseContext(), A.class)); 

Пытаясь загрузить значение, которое я написал, чтобы расслоение в действии A:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.d("MY", "saved instance is null"+ Boolean.toString(savedInstanceState == null)); } 

Возвращает всегда savedInstanceState = null. Что мне здесь не хватает?

OnRestoreInstanceState никогда не запускается, когда я возвращаюсь к основной деятельности

Solutions Collecting From Web of "OnSaveInstanceState не сохраняет мои значения (onCreate input Bundle всегда равно null)"

В коде нет ничего плохого. Попытайтесь повернуть устройство, когда он будет действовать на активность A. В журнале вы увидите следующее: это означает, что ваш onSaveInstanceState () работает нормально:

 saved instance is nullfalse 

Вот выдержка с сайта разработчика Android , который может показаться вам интересным:

Метод обратного вызова, в котором вы можете сохранить информацию о текущем состоянии вашей активности, – onSaveInstanceState (). Система вызывает этот метод, прежде чем сделать объект уязвимым для уничтожения и передает ему объект Bundle. В Bundle вы можете хранить информацию о состоянии активности как пары имя-значение, используя такие методы, как putString (). Затем, если система убивает процесс вашей активности и пользователь переходит к вашей активности, система передает Bundle на onCreate (), чтобы вы могли восстановить состояние активности, которое вы сохранили во время onSaveInstanceState (). Если нет информации о состоянии для восстановления, то пакет, переданный в onCreate (), равен NULL.

Примечание. Нет гарантии, что onSaveInstanceState () будет вызван до того, как ваша активность будет уничтожена, потому что есть случаи, когда нет необходимости сохранять состояние (например, когда пользователь покидает вашу деятельность с помощью клавиши BACK, поскольку Пользователь явно закрывает активность). Если метод вызывается, он всегда вызывается перед onStop () и, возможно, перед onPause ().

Я решил это:

 intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

При повторном запуске старого намерения с сохраненным состоянием из фона. Без этого флага я думаю, что когда вызывается startActivity, он создает новый экземпляр Activity вместо того, чтобы стареть из стека.

Вы должны сделать super.onSaveInstanceState (outState), прежде чем добавлять к нему контент.

Если переходить на другую активность и возвращаться, лучше всего сохранить ее в SharedPreference в onPause() , который должен выполняться при загрузке нового действия. В другой onCreate() значение можно получить в onCreate() путем доступа к общим предпочтениям.

Если вы хотите сохранить состояние своего фрагмента за поворот устройства, и вам интересно, что onSaveInstanceState никогда не вызывается:

  1. Проверьте, вызываете ли вы super.onSaveInstanceState(outState); onSaveInstanceState всех ваших onSaveInstanceState .
  2. Убедитесь, что у вас нет android:configChanges в вашем AndroidManifest.xml.