Как вернуться к предыдущей активности

У меня есть три действия A, B и C. Когда я нажимаю кнопку в упражнении A, он запускает упражнение B, а когда я нажимаю кнопку в упражнении B, он запускает упражнение C. До сих пор проблем не возникало.

но когда я нажимаю кнопку "Назад" в упражнении C, это возвращает меня обратно в B. Но то, что происходит, можно описать следующим образом:

1st time B starts C, then C goes back to B
2nd time B starts C, then C goes back to B
3rd time B starts C, then C goes back to B
4th time B starts C, then C goes back to B

и так далее,

Теперь, когда я нажимаю кнопку "Назад" на B, он должен перевести меня обратно к A, но что происходит, когда я нажимаю кнопку "Назад" на B, он снова и снова возвращает меня к B, так же, как B начал C, если действие B начиналось C 5 раз, затем при нажатии кнопки "Назад" на B оно 5 раз возвращало меня к той же активности B, а в 6-й раз возвращало меня к A

пожалуйста, дайте мне знать, почему это радует и как это решить

код

//in activity C
@Override
public void onBackPressed() {
    super.onBackPressed();

    new Intent(SchadenListeActivity.this, 
VersMoreDetailsModActivity.class);
    finish();
}

//in activity B
@Override
public void onBackPressed() {
    super.onBackPressed();

    new Intent(VersMoreDetailsModActivity.this,   
 VersicherungsListeActivity.class);
    finish();
}

4 ответа

Вы создаете новые экземпляры Activity в onBackPressed. Просто удалите операторы намерений из ваших действий.

// в действии C

@Override
public void onBackPressed() 
 {
 super.onBackPressed();
 finish();
}

// в действии B

@Override
public void onBackPressed() 
 {
 super.onBackPressed();
 finish();
}

Включите родительские действия в свой манифест с атрибутом android:parentActivityName="com.example.myfirstapp

Вот еще немного информации о навигации вверх http://developer.android.com/design/patterns/navigation.html

Когда вы переходите от A->B->C, не заканчивайте ни одного из действий. Удалить onBackPressed() код, нет необходимости справляться с этим.

Каждый раз в onBackPressed()метод, которым вы начинаете новый Activity и Android работает на Backstack Model..

Позвольте мне объяснить это

Activity-A  Activity-B  Activity-C

Таким образом, каждый раз, когда вы нажимаете кнопку OnBackPressed, стек показывает это поведение.

Stack [ Activity-A, Activity-B, Activity-C,(Backpressed)(POP Activity-C), Activity-B, Activity-C, (Backpressed)(POP - Activity-C), Activity - B, Activity - C, (BackPressed)(POP - Activity-C), Activity - B, Activity -C...]

Так что оставшийся стек будет похож

Stack [ Activity-A, Activity-B, Activity-B, Activity - B, Activity - B, Activity -C...]

Просто вызовите финиш (); не новое намерение.

Другие вопросы по тегам