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.