Intereting Posts
Способ спрятать программную клавиатуру, если не использовать функции edittext в android Android – Linkify, autoLink удаляет изменение цвета текста при касании Как использовать SupportMapFragment внутри фрагмента? Как удалить неиспользуемые языки из окончательного файла APK с помощью Xamarin.Android? Нет JNI_OnLoad найдено пропущение init> Закрытие приложения Я получаю только пустой белый экран при использовании svg-android Android-приложение Key Hash не соответствует сохраненным хэшам ключей SQLite "INSERT OR REPLACE INTO" не работает Как создать модальное диалоговое окно в android Как создать приложение, которое позволяет только горизонтальную ориентацию? Черное мерцание на Honeycomb WebView Как изменить ориентацию видео в MediaRecorder на портрет Android Media Player играет на заднем плане, но не останавливается, когда приложение убито NETWORK_PROVIDER не предоставляет обновленные местоположения Как сделать приложение полноэкранным в Galaxy Tab

OnCreate вызывается в действии A в верхней навигации

Поэтому у меня есть активность A и активность B. Я хочу, чтобы Activity A мог перейти к Activity B нажатием одной кнопки. Это работает, но когда я использую навигацию вверх (кнопка «домой» в панели действий), чтобы вернуться к Activity A, onCreate () вызывается снова, и старая информация, которую пользователь вводит, теряется.

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

Solutions Collecting From Web of "OnCreate вызывается в действии A в верхней навигации"

Такое поведение совершенно и нужно. Система может решить остановить Activities которые находятся в фоновом режиме для освобождения некоторой памяти. То же самое происходит, например, при вращении устройства.

Обычно вы сохраняете свое состояние экземпляра (например, введенный текст и прочее) в пакет и извлекаете эти значения из пакета при восстановлении Activity .

Вот некоторый стандартный код, который я использую:

 private EditText mSomeUserInput; private int mSomeExampleField; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // TODO inflate layout and stuff mSomeUserInput = (EditText) findViewById(R.id.some_view_id); if (savedInstanceState == null) { // TODO instanciate default values mSomeExampleField = 42; } else { // TODO read instance state from savedInstanceState // and set values to views and private fields mSomeUserInput.setText(savedInstanceState.getString("mSomeUserInput")); mSomeExampleField = savedInstanceState.getInt("mSomeExampleField"); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); // TODO save your instance to outState outState.putString("mSomeUserInput", mSomeUserInput.getText().toString()); outState.putInt("mSomeExampleField", mSomeExampleField); } 

Вы можете заставить кнопку вверх вести себя как нажатие назад, переопределяя onSupportNavigateUp()

  @Override public boolean onSupportNavigateUp() { onBackPressed(); return true; }