@Override
  public void onSaveInstanceState(Bundle outState) {

    outState.putParcelable(STATE_CURRENT_VALUES, mCurrentValues);

    super.onSaveInstanceState(outState);
  }
  @Override
  public void onActivityCreated(Bundle savedInstanceState) {

    View root = getView();

    mContainer = root.findViewById(R.id.scheduler_container);

    mViewSwitcher = (ViewAnimator) root.findViewById(R.id.scheduler_switcher);

    mBtnOneShot = (Button) root.findViewById(R.id.btn_one_shot);
    mBtnOneShot.setOnClickListener(mBtnClickListener);
    mBtnRepeat = (Button) root.findViewById(R.id.btn_repeat);
    mBtnRepeat.setOnClickListener(mBtnClickListener);
    mBtnEvery = (Button) root.findViewById(R.id.btn_every);
    mBtnEvery.setOnClickListener(mBtnClickListener);

    mDatePicker = (ScrollDatePicker) root.findViewById(R.id.scheduler_date_picker);
    Calendar calendar = Calendar.getInstance();
    mDatePicker.init(
        calendar.get(Calendar.YEAR),
        calendar.get(Calendar.MONTH),
        calendar.get(Calendar.DAY_OF_MONTH),
        this);

    mRepeatPicker = (RepeatPicker) root.findViewById(R.id.scheduler_repeat_picker);
    mRepeatPicker.setListener(this);

    mIntervalPicker = (IntervalPicker) root.findViewById(R.id.scheduler_every_picker);
    mIntervalPicker.setOnChangeListener(this);

    mOverlayView = root.findViewById(R.id.scheduler_overlay);
    mOverlayView.setOnClickListener(mOverlayClickListener);

    if (savedInstanceState != null) {
      mCurrentValues = savedInstanceState.getParcelable(STATE_CURRENT_VALUES);
    } else {
      mContainer.setAnimation(AnimationUtils.loadAnimation(getActivity(), R.anim.slide_in_bottom));
      mOverlayView.animate().alpha(1.0f);

      mCurrentValues = getArguments().getParcelable(STATE_CURRENT_VALUES);
    }

    if (mCurrentValues == null) {
      mCurrentValues = new OneShotValues(Calendar.getInstance());
    }

    // save();     this overwrites the loaded schedule ;(

    updateViews();

    super.onActivityCreated(savedInstanceState);
  }
  @Override
  public void onAttach(Activity activity) {
    super.onAttach(activity);

    if (getParentFragment() != null) {
      try {
        mListener = (ScheduleChangeListener) getParentFragment();
      } catch (ClassCastException e) {
        throw new ClassCastException(
            getParentFragment().getClass().getSimpleName()
                + " must implement ScheduleChangeListener");
      }
    } else {
      try {
        mListener = (ScheduleChangeListener) activity;
      } catch (ClassCastException e) {
        throw new ClassCastException(
            activity.toString() + " must implement ScheduleChangeListener");
      }
    }
  }