Активность Android не отображается

#android

#Android

Вопрос:

Я пытаюсь запустить действие (Act2) из другого действия (Act1), и это происходит не так, как должно.

В отладчике я вижу, что в результате вызова startActivity() метод onCreate() act2 вызывается 3 раза (!! …), ошибка не отображается или поймано исключение, и, к сожалению, желаемый пользовательский интерфейс не отображается.

чтобы попытаться лучше понять, в чем проблема, я запускаю следующие 2 теста, которые показали ожидаемое нормальное поведение:

  1. когда я изменяю Act1 для запуска Act3 (вместо Act2, просто чтобы понять, проблема ли в Act1), act3 отображает свой пользовательский интерфейс, как ожидалось.
  2. когда Act4 запускает Act2, он запускается, как ожидалось, и отображает пользовательский интерфейс на экране.

Что касается кода, я запускаю активность обычным способом:

 Intent intent = new Intent(Act1.this, Act2.class);
startActivity(intent);
  

Кто-нибудь сталкивался с такой вещью?

Спасибо.

Ответ №1:

Возможно, вы захотите ознакомиться с документацией по жизненному циклу деятельности.

onCreate будет вызываться только один раз за каждое время действия. Однако существует ряд ситуаций, которые могут привести к тому, что ваша активность будет прервана и возвращена к жизни. Таким образом, onCreate будет вызван снова.

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

Комментарии:

1. спасибо за быстрый ответ.

2. Я надеюсь, что это помогло бы вам.

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

4. Ну, я расширяю существующее приложение, и есть код, который был вызван, который вызвал такое поведение при вызове Act1 несколько раз из-за некоторого сложного контекста. Итак, я исправил контекст, и ошибка сейчас не возникает. тем не менее, я не знаю, как найти «кто меня активировал?» (помимо поиска в коде «startActivity(Act1intent)») В любом случае спасибо за ответ!