@Override
  public View onCreateView(
      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.number_picker_dialog, null);
    Button doneButton = (Button) view.findViewById(R.id.done_button);
    Button cancelButton = (Button) view.findViewById(R.id.cancel_button);

    cancelButton.setTextColor(mTextColor);
    cancelButton.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View view) {
            dismiss();
          }
        });

    doneButton.setTextColor(mTextColor);
    doneButton.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View view) {
            BigDecimal number = mPicker.getEnteredNumber();
            if (mMinNumber != null
                && mMaxNumber != null
                && (isSmaller(number) || isBigger(number))) {
              String errorText = getString(R.string.min_max_error, mMinNumber, mMaxNumber);
              mPicker.getErrorView().setText(errorText);
              mPicker.getErrorView().show();
              return;
            } else if (mMinNumber != null && isSmaller(number)) {
              String errorText = getString(R.string.min_error, mMinNumber);
              mPicker.getErrorView().setText(errorText);
              mPicker.getErrorView().show();
              return;
            } else if (mMaxNumber != null && isBigger(number)) {
              String errorText = getString(R.string.max_error, mMaxNumber);
              mPicker.getErrorView().setText(errorText);
              mPicker.getErrorView().show();
              return;
            }
            for (NumberPickerDialogHandlerV2 handler : mNumberPickerDialogHandlersV2) {
              handler.onDialogNumberSet(
                  mReference,
                  mPicker.getNumber(),
                  mPicker.getDecimal(),
                  mPicker.getIsNegative(),
                  number);
            }
            final Activity activity = getActivity();
            final Fragment fragment = getTargetFragment();
            if (activity instanceof NumberPickerDialogHandlerV2) {
              final NumberPickerDialogHandlerV2 act = (NumberPickerDialogHandlerV2) activity;
              act.onDialogNumberSet(
                  mReference,
                  mPicker.getNumber(),
                  mPicker.getDecimal(),
                  mPicker.getIsNegative(),
                  number);
            } else if (fragment instanceof NumberPickerDialogHandlerV2) {
              final NumberPickerDialogHandlerV2 frag = (NumberPickerDialogHandlerV2) fragment;
              frag.onDialogNumberSet(
                  mReference,
                  mPicker.getNumber(),
                  mPicker.getDecimal(),
                  mPicker.getIsNegative(),
                  number);
            }
            dismiss();
          }
        });

    mPicker = (NumberPicker) view.findViewById(R.id.number_picker);
    mPicker.setSetButton(doneButton);
    mPicker.setTheme(mTheme);
    mPicker.setDecimalVisibility(mDecimalVisibility);
    mPicker.setPlusMinusVisibility(mPlusMinusVisibility);
    mPicker.setLabelText(mLabelText);
    if (mMinNumber != null) {
      mPicker.setMin(mMinNumber);
    }
    if (mMaxNumber != null) {
      mPicker.setMax(mMaxNumber);
    }
    mPicker.setNumber(mCurrentNumber, mCurrentDecimal, mCurrentSign);

    getDialog().getWindow().setBackgroundDrawableResource(mDialogBackgroundResId);
    return view;
  }