Android, как определить, что активность вернулась из другой активности?
Для Android предположим 3 действия, a1 a2 a3, с их иерархией кликов, a1-> a2-> a3.
Мои вопросы находятся в a2, как определить, что это от a3, нажав клавишу "Назад", вместо ввода из a1?
Ответы
Ответ 1
onCreate
будет вызван в случае обратного пресса.
Существует несколько способов сделать вывод, если вы достигли этого действия нажатием клавиши "Назад".
-
Задайте boolean
в oncreate, которое говорит о onCreate
.
-
Запустите 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
}
Это позволит вам понять, откуда вы пришли.