Недавно при редизайне одного из моих приложений я перешел от всех действий к архитектуре с одним действием и преобразовал все другие действия во фрагменты.
Итак, мое приложение состоит из одного действия с 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.