if (id == R.id.profile) {
Profile fr = new Profile();
FragmentTransaction fm = getSupportFragmentManager().beginTransaction();
clearBackStack();
fm.replace(R.id.content_frame,fr);
fm.addToBackStack("Profile");
fm.commit();
}
此代码首先给出配置文件片段。再次按此代码时会显示主页。但它在SDK 23中正常工作
答案 0 :(得分:0)
像这样改变你的明确的背书
@Override
public void onBackPressed() {
clearBackStack();
}
private void clearBackStack() {
FragmentManager manager = getSupportFragmentManager();
if (manager.getBackStackEntryCount() > 0) {
Fragment fragment=manager.findFragmentById(R.id.YOUR_FRAME_LAYOUT);
if(fragment!=null && fragment.getClass().getSimpleName().equalsIgnoreCase(YOUR_FRAGMENT.class.getSimpleName())){
manager.popBackStackImmediate();
}else {
super.onBackPressed();
}
}
}
在添加片段时也不要清除backstack。只有按下后退按钮才能通过弹出片段清除堆栈。在添加片段时从代码中移除clearBackStack()
。