Для Android предположим 3 действия, a1 a2 a3, с их иерархией кликов, a1-> a2-> a3.
Мои вопросы находятся в a2, как определить, что это от a3, нажав клавишу "Назад", вместо ввода из a1?
Для Android предположим 3 действия, a1 a2 a3, с их иерархией кликов, a1-> a2-> a3.
Мои вопросы находятся в a2, как определить, что это от a3, нажав клавишу "Назад", вместо ввода из a1?
onCreate
будет вызван в случае обратного пресса.
Существует несколько способов сделать вывод, если вы достигли этого действия нажатием клавиши "Назад".
Задайте boolean
в oncreate, которое говорит о onCreate
.
Запустите startActivityForResult
C, вызвав startActivityForResult
и когда вы вернетесь из C onActivityResult
.
Вы можете использовать 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, но вы можете отправить данные обратно, если хотите.
Вы можете использовать следующие методы
onCreate()
когда активность сначала создается (от a1 до a2). Этот метод не будет вызываться, когда вы вернетесь с помощью кнопки "Назад".
onRestart()
была в фоновом режиме и выходит на передний план (back press in a3)
Поместите некоторый ключ в намерение, когда вы начнете свою деятельность.
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
}
Это позволит вам понять, откуда вы пришли.