Запуск предыдущего действия

#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, то вы не сможете вернуться к предыдущему действию. Если вы этого не сделаете, будут запущены новые «одинаковые» действия.