@TiPo

Почему savedInstanceState всегда null?

У меня есть две активити. После ввода данных на первой приложение переключается на второе активити. При нажатии обратно я хочу видеть введённые раннее данные. Но этого не происходит - все поля пустые.
public void onSaveInstanceState(Bundle savedInstanceState) всегда вызывается в момент переключения между активити. Однако в onCreate savedInstanceState всегда равен null.
Почему так? И как это исправить?
Код:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        ButterKnife.bind(this);

        if (savedInstanceState != null) {
            firstNameEdit.setText(savedInstanceState.getString(STATE_FIRST_NAME_EDITOR));
            secondNameEdit.setText(savedInstanceState.getString(STATE_SECOND_NAME_EDITOR));
            birthDate.setText(savedInstanceState.getString(STATE_BIRTH_DATE_EDITOR));
        }
    }

 @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        savedInstanceState.putString(STATE_FIRST_NAME_EDITOR, firstNameEdit.getText().toString());
        savedInstanceState.putString(STATE_SECOND_NAME_EDITOR, secondNameEdit.getText().toString());
        savedInstanceState.putString(STATE_BIRTH_DATE_EDITOR, birthDate.getText().toString());

        super.onSaveInstanceState(savedInstanceState);
    }
  • Вопрос задан
  • 2445 просмотров
Решения вопроса 1
@TiPo Автор вопроса
Решение.
Выставил для активити в манифесте свойство: android:launchMode="singleTop"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Tiberal
Вы когда новое активити открываете случаем не дергаете finish() где-нить на старой? В этом случае данные могут не сохраниться.
Если же вы просто откроете новое активити, то старое уйдет в фон и при нажатии ап вы просто вернетесь на старую таску со всеми данными. Исключением является ситуация , когда система сама прибьет ваше активити(переворот, мало памяти) в этом случае система сохранит стейт и при возврате будет создано новое активити, где этот стейт надо распотрошить.
Проверьте launchmode в манифесте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы