@Override
 public void onResume() {
   super.onResume();
   LogUtils.logd(TAG, "[onResume]");
   maybeShowHideTaglines();
   if (mCustomInterfaceConfiguration != null) mCustomInterfaceConfiguration.onResume();
 }
  @Override
  public void onDestroy() {
    LogUtils.logd(TAG, "[onDestroy]");
    if (mFragmentResult != null) {
      if (getActivity() instanceof JRFragmentHostActivity) {
        ((JRFragmentHostActivity) getActivity())._setResult(mFragmentResult);
      } else if (getTargetFragment() != null) {
        getTargetFragment().onActivityResult(getTargetRequestCode(), mFragmentResult, null);
      }
    }

    if (mSession != null) mSession.setUiIsShowing(false);

    if (mCustomInterfaceConfiguration != null) mCustomInterfaceConfiguration.onDestroy();

    super.onDestroy();
  }
  /* May be called at any time before onDestroy() */
  @Override
  public void onSaveInstanceState(Bundle outState) {

    Bundle[] dialogOptions = new Bundle[mManagedDialogs.size()];
    int x = 0;
    for (ManagedDialog d : mManagedDialogs.values()) {
      d.mShowing = d.mDialog.isShowing();
      dialogOptions[x++] = d.mOptions;
      d.mOptions.putInt(KEY_DIALOG_ID, d.mId);
    }
    outState.putSerializable(KEY_MANAGED_DIALOGS, mManagedDialogs);
    outState.putParcelableArray(KEY_MANAGED_DIALOG_OPTIONS, dialogOptions);

    if (mCustomInterfaceConfiguration != null) {
      mCustomInterfaceConfiguration.onSaveInstanceState(outState);
    }

    super.onSaveInstanceState(outState);
  }
 @Override
 public void onPause() {
   if (mCustomInterfaceConfiguration != null) mCustomInterfaceConfiguration.onPause();
   super.onPause();
 }