Как вернуться к предыдущей активности
У меня есть три действия 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...]
Просто вызовите финиш (); не новое намерение.