Просто чтобы добавить что-то к другому ответу.
Допустим, у нас есть только два представления, которые мы пролистываем, делая:
public void onBackPressed() {
if (mViewFlipper.getDisplayedChild() == 1) {
mViewFlipper.setDisplayedChild(0);
} else if (mViewFlipper.getDisplayedChild() == 0) {
flipView.setDisplayedChild(1);
}
}
недостаточно. На самом деле, это создает еще одну проблему для вас.
Если вид равен 0 (первый), а затем вы нажимаете кнопку «назад», НИЧЕГО не происходит. Деятельность не выходит. Это потому, что вы не позвонили super.onBackPressed()
. Теперь добавление super.onBackPressed()
к приведенному выше коду также создает другую проблему. Когда вы переключаетесь с 1 (второе представление), оно переходит к первому представлению (0) и затем выходит из действия, что неправильно, если не для чего-то кроме странной анимации пропуска представления при переходе от одного действия к другому. 1008 *
Лучший способ реализовать onBackPressed()
для вашей деятельности, содержащей ViewFlipper
, это:
public void onBackPressed() {
int displayedChildId = mViewFlipper.getDisplayedChild(); //get current view's number
if (displayedChildId > 0) { //if this number is greater than 0(let's say 5)
mViewFlipper.setDisplayedChild(displayedChildId - 1);//We then go down that number by 1. That is 5 - 1, which is 4. This happens until displayedChildId isn't greater than 0 anymore, which is then the first view. if we press back from here, we exit the activity.
} else {
super.onBackPressed();
}
}
Надеюсь, это имеет смысл