单活动架构和多片段(嵌套片段)的后退按钮问题

时间:2014-07-04 17:28:28

标签: android android-fragments android-nested-fragment

最近在我的一个应用程序重新设计中,我从所有活动转移到单一活动架构,并将所有其他活动转换为碎片。

所以我的应用程序包含一个包含片段的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支持库。

1 个答案:

答案 0 :(得分:0)

您也可以使用onBackPressed它可能会更清洁,并且肯定会由Google维护。 另外,正如你最后所说,v4支持库实际上是用于API 4,适用于Android 1.6 ......如果你的目标是Android 4+,那么没有支持库你就会很好。