public View onCreateView(
      final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
    if (savedInstanceState != null) {
      final String loginTypeString = savedInstanceState.getString(LOGIN_TYPE_KEY);
      loginType = loginTypeString == null ? loginType : LoginType.valueOf(loginTypeString);
      progress = savedInstanceState.getInt(PROGRESS_KEY, progress);
      final String progressTypeString = savedInstanceState.getString(PROGRESS_TYPE_KEY);
      progressType =
          progressTypeString == null ? progressType : ProgressType.valueOf(progressTypeString);
    }

    View view = super.onCreateView(inflater, container, savedInstanceState);
    if (view == null) {
      final int layoutResourceId;
      switch (progressType) {
        case DOTS:
          layoutResourceId = R.layout.fragment_reverb_footer_dots;
          break;
        case BAR:
        default:
          layoutResourceId = R.layout.fragment_reverb_footer_bar;
          break;
      }
      view = inflater.inflate(layoutResourceId, container, false);
    }
    updateButtonText(view);
    updateProgress(view);
    updateSwitchLoginTypeListener(view);
    return view;
  }
  @Override
  public void onSaveInstanceState(final Bundle outState) {
    super.onSaveInstanceState(outState);

    outState.putString(LOGIN_TYPE_KEY, loginType == null ? null : loginType.name());
    outState.putInt(PROGRESS_KEY, progress);
    outState.putString(PROGRESS_TYPE_KEY, progressType.name());
  }