Android, как определить, что активность вернулась из другой активности?

Для Android предположим 3 действия, a1 a2 a3, с их иерархией кликов, a1-> a2-> a3.

Мои вопросы находятся в a2, как определить, что это от a3, нажав клавишу "Назад", вместо ввода из a1?

Ответ 1

onCreate будет вызван в случае обратного пресса.

Существует несколько способов сделать вывод, если вы достигли этого действия нажатием клавиши "Назад".

  1. Задайте boolean в oncreate, которое говорит о onCreate.

  2. Запустите startActivityForResult C, вызвав startActivityForResult и когда вы вернетесь из C onActivityResult.

Ответ 2

Вы можете использовать onActivityResult для проверки возврата из другого действия. Поместите этот код в свою активность a2...

Объявите код запроса как константу в верхней части вашей деятельности:

public static final int OPEN_NEW_ACTIVITY = 123456;

Поместите это, когда вы начнете новую деятельность:

Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, OPEN_NEW_ACTIVITY);

Сделайте что-нибудь, когда действие будет завершено. Документация предполагает, что вы используете resultCode, но в зависимости от ситуации ваш результат может быть RESULT_OK или RESULT_CANCELED при нажатии кнопки. Поэтому я оставил бы это.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == OPEN_NEW_ACTIVITY) {
        // Execute your code on back here
        // ....
    }
}

По какой-то причине у меня были проблемы, когда я помещал это в Фрагмент. Поэтому вам придется поместить его в Activity.

Фактически вам не нужно вводить какой-либо код в действие a3, но вы можете отправить данные обратно, если хотите.

Ответ 3

Вы можете использовать следующие методы

onCreate() когда активность сначала создается (от a1 до a2). Этот метод не будет вызываться, когда вы вернетесь с помощью кнопки "Назад".

onRestart() была в фоновом режиме и выходит на передний план (back press in a3)

Ответ 4

Поместите некоторый ключ в намерение, когда вы начнете свою деятельность.

   Intent intent = new Intent(getBaseContext(), A1Activity.class);
   intent.putExtra("I_CAME_FROM", "a1");
   startActivity(intent)

И прочитал его в открытой деятельности:

   String flag = intent.getStringExtra("I_CAME_FROM");
   if(flag.equlas("a1")){
   //you came from a1 activity
   }

Это позволит вам понять, откуда вы пришли.