最近在我的一个应用程序重新设计中,我从所有活动转移到单一活动架构,并将所有其他活动转换为碎片。
所以我的应用程序包含一个包含片段的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支持库。
答案 0 :(得分:0)
您也可以使用onBackPressed它可能会更清洁,并且肯定会由Google维护。 另外,正如你最后所说,v4支持库实际上是用于API 4,适用于Android 1.6 ......如果你的目标是Android 4+,那么没有支持库你就会很好。