Проблемы с кнопкой "Назад" в архитектуре с одним действием и с несколькими фрагментами (вложенные фрагменты)

Недавно при редизайне одного из моих приложений я перешел от всех действий к архитектуре с одним действием и преобразовал все другие действия во фрагменты.

Итак, мое приложение состоит из одного действия с TabHost (4 вкладки), содержащим фрагменты. В каждом фрагменте вкладки у меня есть несколько фрагментов (дочерние фрагменты)

На этом пути у меня возникают проблемы с навигацией по кнопке «Назад» при использовании многоуровневых фрагментов. Как я могу добиться стандартного и последовательного поведения кнопки «Назад» при переходе по единому маршруту действия?

Ниже приведен код для обратной навигации для одного дочернего фрагмента:

  private void catchBackEvent(View v) {
    v.setFocusableInTouchMode(true);
    v.requestFocus();
    v.setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                if (isEnableFragmentBackStack()) {
                    getChildFragmentManager().popBackStack();
                    return true;
                } else
                    return false;
            }
            return false;
        }
    });
}

public boolean isEnableFragmentBackStack() {
    if (getChildFragmentManager().getBackStackEntryCount() > 0)
        return true;
    else
        return false;
}

Кроме того, я хотел бы знать, есть ли у этого подхода плюсы и минусы, а также какие-либо потенциальные препятствия, с которыми я могу столкнуться в будущем.

__

Мы поддерживаем Android 4.1 и выше, поэтому мы используем библиотеку поддержки v4.


person Handroid    schedule 04.07.2014    source источник


Ответы (1)


Вы также можете использовать onBackPressed, вероятно, он будет чтобы быть чище и наверняка поддерживаться Google. Кроме того, как вы сказали в конце, библиотека поддержки v4 на самом деле предназначена для API 4, который предназначен для Android 1.6 ... если ваша цель - Android 4+, вам будет хорошо без библиотеки поддержки.

person Pozzo Apps    schedule 04.07.2014