Android: удалить серию Activites при нажатии назад - PullRequest
1 голос
/ 27 апреля 2011

Здравствуйте, теперь мое приложение работает так ...

Main -> SEARCH -> ActivityA -> SEARCH -> ActivityB

И когда я возвращаюсь из ActivityB, я хочу сделать следующее

Main <- SEARCH <- ActivityB </p>

Т.е. я хочу пропустить действия ActivityA и ПОИСК. Я знаю, что должен использовать ФЛАГ, но как?

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

может быть полезно Android: очистить задний стек

1 голос
/ 27 апреля 2011

Вы можете просто сделать:

In SearchActivity

Intent i = new Intent(this, ActivityA.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);

В деятельности A

Intent i = new Intent(this, SearchActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);

, который вернет вас от B к поиску, а затем к основному при двух нажатиях кнопки «назад».

1012 * Тем не менее *

Если вы перейдете от Главы к поиску к А к поиску, а затем нажмете кнопки «Назад», вы перейдете от поиска к поиску к основному. (Два случая поиска, вероятно, не то, что вы хотите)

Лучше установить флаги в Деятельности A так:

Intent i = new Intent(this, SearchActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);

Это остановит вышеуказанное поведение и все равно даст вам то, что вы хотите, когда вы наносите ответный удар от B

0 голосов
/ 27 апреля 2011

Мне просто пришлось переопределить кнопку "Назад" в операции ПОИСК, вот так

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event)  {
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
         Log.d(TAG, "back pressed");
         Intent intent = new Intent(this, MainActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         startActivity(intent);
     }
     return super.onKeyDown(keyCode, event);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...