#android
#Android
Вопрос:
Допустим, что из действия A запускается действие B, а из B запускается C. Нормально ли запускать действие A из C нажатием кнопки вместо двойного нажатия кнопки «Назад», или это практика утечки памяти?
Ответ №1:
Intent.FLAG_ACTIVITY_CLEAR_TOP
Ответ №2:
Вы должны это сделать:
`Действие A:
public static final int ID = X
// ....
startActivityForResult(intentToB,ID)
// ....
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ID){
switch (resultCode){
case RESULT_OK:
//...
break;
case RESULT_RETURN:
// ...
default:
//...
}
}
}
`
` Действие B:
public static final int ID = Y
// ....
startActivityForResult(intentToC,ID)
// ....
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ID){
switch (resultCode){
case RESULT_OK:
//...
break;
case RESULT_RETURN:
setResult(RESULT_RETURN);
ActivityB.this.finish();
default:
//...
}
}
}
`
Activity C:
//inside of button onclick listener
setResult(RESULT_VOLVER);
ActivityC.this.finish();
Комментарии:
1. Спасибо за ответ, но не могли бы вы выразиться более конкретно?
2. в действии вы можете запустить другое действие, ожидающее результата с помощью
startActivityForResult(intent, IDofActivityA)
и перехватывать ответы от действия B с помощью методаonActivityResult
Если вы создаете ответ типа RESULT_RETURN и управляете им с помощью onActivityResult, вы можете создать «путь» от действия C к действию A: Действие A вызывает действие B, вызывает действие C —> SetResult(RETURN). Перехват действия B -> SetResult (возврат) и перехват действия A. Вы переходите ко всем нужным действиям, не нажимая кнопку возврата. Извините за мой английский. Я не могу быть более конкретным
Ответ №3:
Я понимаю вашу идею. Кажется, из HomeActivity вы вводите действие A, а рядом с действием B и так далее. При отображении каждого действия (A, B, …) есть кнопка HOME для быстрого возврата домой при нажатии этой кнопки.
Вот исходный код:
public void btn_home_click(View v) {
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
Комментарии:
1. Если вы вызовете finish, то вы не сможете вернуться к предыдущему действию. Если вы этого не сделаете, будут запущены новые «одинаковые» действия.