private void showCurrentFragment() {
    HashMap<Integer, DSFragment> subfragments = getSubFragments();

    for (int i = 0; i < mOrder.size(); ++i) {
      DSFragment subfragment = subfragments.get(mOrder.get(i));
      subfragment
          .getRootView()
          .setVisibility(i == mCurrentFragmentPosition ? View.VISIBLE : View.GONE);
      ++i;
    }
  }
  @Override
  protected void setActiveInner(boolean active) {
    super.setActiveInner(active);

    if (active && getDSActivity() != null) {
      switchToFragment(mCurrentFragmentPosition);
    }
  }
  @Override
  public View onCreateView(
      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);

    showCurrentFragment();

    return mRootView;
  }
  @Override
  protected void createActionBarItems(Menu menu) {
    super.createActionBarItems(menu);

    final DSActivity activity = getDSActivity();

    for (SwitchOption option : mSwitchOptions) {
      MenuItem item = activity.findMenuItem(option.optionID);
      if (item == null) {
        item =
            activity.addMenuItem(
                option.optionID, option.titleResID, option.iconResID, option.position, false);
        mActionBarSwitchItems.add(item);
      }
    }
  }
  @Override
  protected void handleActionBarItems(boolean active) {
    super.handleActionBarItems(active);

    handleSwitchOptions(active);
  }
  /**
   * @param containerViewID
   * @param fragment
   * @param name
   * @param position
   */
  protected void attachSubFragment(
      int containerViewID, DSFragment fragment, String name, int position) {
    super.attachSubFragment(containerViewID, fragment, name);

    mOrder.put(position, containerViewID);
  }
 @Override
 public void onRestoreInstanceState(Bundle savedInstanceState) {
   super.onRestoreInstanceState(savedInstanceState);
   mCurrentFragmentPosition = savedInstanceState.getInt("current-fragment-position");
 }
 @Override
 public void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   outState.putInt("current-fragment-position", mCurrentFragmentPosition);
 }