private void installActionBarToggleSwitch() {
   mToggleSwitch = createAndAddActionBarToggleSwitch(getActivity());
   mToggleSwitch.setOnBeforeCheckedChangeListener(
       new OnBeforeCheckedChangeListener() {
         @Override
         public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
           if (checked) {
             if (!TextUtils.isEmpty(mEnableWarningMessage)) {
               toggleSwitch.setCheckedInternal(false);
               getArguments().putBoolean(EXTRA_CHECKED, false);
               showDialog(DIALOG_ID_ENABLE_WARNING);
               return true;
             }
             onPreferenceToggled(mPreferenceKey, true);
           } else {
             if (!TextUtils.isEmpty(mDisableWarningMessage)) {
               toggleSwitch.setCheckedInternal(true);
               getArguments().putBoolean(EXTRA_CHECKED, true);
               showDialog(DIALOG_ID_DISABLE_WARNING);
               return true;
             }
             onPreferenceToggled(mPreferenceKey, false);
           }
           return false;
         }
       });
 }
 @Override
 public void onDestroyView() {
   getActivity().getActionBar().setCustomView(null);
   if (mOldActivityTitle != null) {
     getActivity().getActionBar().setTitle(mOldActivityTitle);
   }
   mToggleSwitch.setOnBeforeCheckedChangeListener(null);
   super.onDestroyView();
 }
 private static ToggleSwitch createAndAddActionBarToggleSwitch(Activity activity) {
   ToggleSwitch toggleSwitch = new ToggleSwitch(activity);
   final int padding =
       activity.getResources().getDimensionPixelSize(R.dimen.action_bar_switch_padding);
   toggleSwitch.setPadding(0, 0, padding, 0);
   activity
       .getActionBar()
       .setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM);
   activity
       .getActionBar()
       .setCustomView(
           toggleSwitch,
           new ActionBar.LayoutParams(
               ActionBar.LayoutParams.WRAP_CONTENT,
               ActionBar.LayoutParams.WRAP_CONTENT,
               Gravity.CENTER_VERTICAL | Gravity.RIGHT));
   return toggleSwitch;
 }
 @Override
 public void onClick(DialogInterface dialog, int which) {
   final boolean checked;
   switch (which) {
     case DialogInterface.BUTTON_POSITIVE:
       checked = (mShownDialogId == DIALOG_ID_ENABLE_WARNING);
       mToggleSwitch.setCheckedInternal(checked);
       getArguments().putBoolean(EXTRA_CHECKED, checked);
       onPreferenceToggled(mPreferenceKey, checked);
       break;
     case DialogInterface.BUTTON_NEGATIVE:
       checked = (mShownDialogId == DIALOG_ID_DISABLE_WARNING);
       mToggleSwitch.setCheckedInternal(checked);
       getArguments().putBoolean(EXTRA_CHECKED, checked);
       onPreferenceToggled(mPreferenceKey, checked);
       break;
     default:
       throw new IllegalArgumentException();
   }
 }
    private void processArguments() {
      Bundle arguments = getArguments();

      // Key.
      mPreferenceKey = arguments.getString(EXTRA_PREFERENCE_KEY);

      // Enabled.
      final boolean enabled = arguments.getBoolean(EXTRA_CHECKED);
      mToggleSwitch.setCheckedInternal(enabled);

      // Title.
      PreferenceActivity activity = (PreferenceActivity) getActivity();
      if (!activity.onIsMultiPane() || activity.onIsHidingHeaders()) {
        mOldActivityTitle = getActivity().getTitle();
        String title = arguments.getString(EXTRA_TITLE);
        getActivity().getActionBar().setTitle(title);
      }

      // Summary.
      String summary = arguments.getString(EXTRA_SUMMARY);
      mSummaryPreference.setSummary(summary);

      // Settings title and intent.
      String settingsTitle = arguments.getString(EXTRA_SETTINGS_TITLE);
      String settingsComponentName = arguments.getString(EXTRA_SETTINGS_COMPONENT_NAME);
      if (!TextUtils.isEmpty(settingsTitle) && !TextUtils.isEmpty(settingsComponentName)) {
        Intent settingsIntent =
            new Intent(Intent.ACTION_MAIN)
                .setComponent(ComponentName.unflattenFromString(settingsComponentName.toString()));
        if (!getPackageManager().queryIntentActivities(settingsIntent, 0).isEmpty()) {
          mSettingsTitle = settingsTitle;
          mSettingsIntent = settingsIntent;
          setHasOptionsMenu(true);
        }
      }

      // Enable warning title.
      mEnableWarningTitle =
          arguments.getCharSequence(AccessibilitySettings.EXTRA_ENABLE_WARNING_TITLE);

      // Enable warning message.
      mEnableWarningMessage =
          arguments.getCharSequence(AccessibilitySettings.EXTRA_ENABLE_WARNING_MESSAGE);

      // Disable warning title.
      mDisableWarningTitle = arguments.getString(AccessibilitySettings.EXTRA_DISABLE_WARNING_TITLE);

      // Disable warning message.
      mDisableWarningMessage =
          arguments.getString(AccessibilitySettings.EXTRA_DISABLE_WARNING_MESSAGE);
    }