您可以非常轻松地处理后退图标.如果你的所有片段都在单个Activity中,我真的建议用以下方式处理它:
首先创建一个抽象的BaseFragment类,它实现了FragmentManager .OnBackStackChangedListener,然后在其中放入以下方法:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mainActivity = (MainActivity) getActivity();
getFragmentManager().addOnBackStackChangedListener(this);
shouldDisplayHomeUp();
}
@Override
public void onBackStackChanged() {
shouldDisplayHomeUp();
}
public boolean shouldDisplayHomeUp() {
//Enable Up button only if there are entries in the back stack
boolean canBack = false;
try {
canBack = getFragmentManager().getBackStackEntryCount() > 0;
} catch (Exception ex) {
// Log.e(getClass().getCanonicalName(), ex.getMessage());getMessage
}
if (canBack) {
mainActivity.drawerDisable();
} else {
mainActivity.drawerEnable();
}
return canBack;
}
通过这种方式disableDrawer& enableDrawer函数处理你的Icon和OnBackPressed方法在你的活动中处理你的BackStack,如果你需要按下后退图标显示.你的onBackPressed应该是这样的:
int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
if (backStackCount == 0) {
//nothing exist in backStack OS handle it
super.onBackPressed();
} else {
getSupportFragmentManager().popBackStack();
}
查看完整实施here.