#android #activity #stack
Как удалить конкретное activity из стека? вот пример, есть activty A,B,C, пользователь переходит A->B->C, и в activty C в определенных условиях, надо вернуться назад(activty B) (делаю finish) надо вернуться назад(сразу в activty A минуя activty B, при этом не пересоздавая activty A, как это сделать?) //делаю так, он пересоздает activty A Intent intent = new Intent(this, A); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
Ответы
Ответ 1
Городить код с запуском активити через onActivityResult() - нерационально. Следует назначить активити А android:launchMode="singleTask". И запустив startActivity(new Intent(this, A) активити А вытащится из стека не пересоздаваясь, попутно закрыв верхние активити.Ответ 2
Ответ на вопросы: Что бы вернуться с активити С на В, ты все делаешь правильно, просто вызываешь finish() у активити С. Что бы вернуться с С на А нужно немного добавить логики. Когда запускаешь активити С, делай это через: startActivtyForResult(new Intent(this, C.class), 1234) При завершении С, перед вызовом finish(), в обратный интент кинь флаг нужно ли завершиться активити В или нет: Intent answerIntent = new Intent(); Bundle bundle = new Bundle(); bundle.putBoolean("need_finish", true); answerIntent.putExtras(bundle); setResult(RESULT_OK, answerIntent); Активити В обрабатывает метод onActivityResult. Если флаг true, то тоже вызываешь finish() у В : onActivityResult(int requestCode, int resultCode, Intent data){ if (requestCode == 1234 && data != null) { if (data.getBoolean("need_finish", true)) { finish(); } } }
Комментариев нет:
Отправить комментарий