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



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

所以我的应用程序由一个单一的活动,它有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支持库

你也可以使用onBackPressed它可能会更干净,肯定会由谷歌维护。另外,正如你最后所说的,v4支持库实际上是针对API 4的,这是针对Android 1.6的…如果你的目标是Android 4+,你会很好,没有支持库。

最新更新