public class BaseFragment extends Fragment { private static final String STATE_SAVE_IS_HIDDEN = "STATE_SAVE_IS_HIDDEN"; @Override public void onCreate(@Nullable Bundle savedInstanceState) { ... if (savedInstanceState != null) { boolean isSupportHidden = savedInstanceState.getBoolean(STATE_SAVE_IS_HIDDEN); FragmentTransaction ft = getFragmentManager().beginTransaction(); if (isSupportHidden) { ft.hide(this); } else { ft.show(this); } ft.commit(); } @Override public void onSaveInstanceState(Bundle outState) { ... outState.putBoolean(STATE_SAVE_IS_HIDDEN, isHidden()); } } public class MainActivity ... { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { ... // 这里一定要在save为null时才加载Fragment,Fragment中onCreateView等生命周里加载根子Fragment同理 // 因为在页面重启时,Fragment会被保存恢复,而此时再加载Fragment会重复加载,导致重叠 if(saveInstanceState == null){ // 这里加载根Fragment } } }