2016-07-23 3 views
0

Например: начало B, B начало C, A и C принадлежит «Hello'-stack», а B принадлежит к «World'-stack», когда пользователь нажимает кнопку «Назад» в действии C, он возвращается к A. Примечание 1: B означает много действий, а не только одно действие, , например, начало B1, начало B1 B2, начало B2 B3 ...., начало Bn C. Примечание2: Мне нужно, чтобы Bs оставались в стеке до тех пор, пока C не будет запущен, когда пользователь нажмет назад в B3, он должен вернуться к b2. enter image description hereКак очистить текущий стек активности при запуске другого действия, принадлежащего другому стеку

Я действительно реализовал эту необходимость, используя startActivityForResult, и я просто хочу знать, есть ли способ использовать стек для реализации этого.

+0

http://stackoverflow.com/questions/19798737/android-intent-flag-to-destroy-activity-and-start-new-one – Mehul

ответ

0

intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); или intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); работает для меня.

0

Просто позвоните закончить() при запуске Activity C из B. Затем переопределить onBackPressed() в деятельности С. И добавить код, чтобы начать деятельность А.

+0

Извините, я не описал свой вопрос четко. одно действие в «World'-стеке в верхней части B. –

+0

Четко скажите поток действий –

+0

Да. Когда вы вызываете новое действие, просто уничтожайте текущую деятельность, вызывая finish() после startActivity(). В операции C переопределите метод onBackPressed(). В методе начните действие A .. –

0

При переходе от активности А к активности В, идут как ниже:

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

И как вы хотите, чтобы открыть C от B, но не хотят B, чтобы быть в стеке, так что, как показано ниже:

Intent i=new Intent(ActivityB.this,ActivityC.class); 
startActivity(i); 
ActivityB.this.finish(); 

так автоматически при backpr essed на C, вы получите A, а не B.