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); }