Android: ViewFlipper с помощью onBackPressed - PullRequest
0 голосов
/ 10 февраля 2012

Я использую ViewFlipper в моем приложении, и для перемещения по страницам я использую кнопку для следующего и захвата onBackPressing для возврата назад.

поведение следующее:

1) Я нажимаю на кнопку и перехожу на 2 страницу.2) нажмите назад и код работает 3) нажмите еще раз на кнопку далее 4) нажмите назад и теперь больше не будет работать

на шаге 4, я чувствую вибрацию, поэтому событие запускается, но мой видоискатель не будетвернуться.

Есть предложения?

Спасибо

Ответы [ 2 ]

2 голосов
/ 25 марта 2013
public void onBackPressed() {


        if (flipView.getDisplayedChild() == 1) {
            flipView.setDisplayedChild(0);

        } else if (flipView.getDisplayedChild() == 0) {
            flipView.setDisplayedChild(1);
        }

    }

Это прекрасно работает для меня. Измените onBackPressed на метод, который когда-либо вызывал кнопку возврата.

1 голос
/ 20 мая 2017

Просто чтобы добавить что-то к другому ответу.

Допустим, у нас есть только два представления, которые мы пролистываем, делая:

  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();
    }
}

Надеюсь, это имеет смысл

...