Fix Switch button creation for PrintService

- setup the ActionBar switch in the onStart()

Change-Id: I92d8bb34dd7925da79a10fe01790131d22f7d0d8
This commit is contained in:
Fabrice Di Meglio
2014-04-08 18:58:33 -07:00
parent 3b22695670
commit 82de8707af

View File

@@ -62,7 +62,6 @@ import android.widget.SearchView;
import android.widget.TextView; import android.widget.TextView;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.print.PrintSettingsFragment.ToggleSwitch; import com.android.settings.print.PrintSettingsFragment.ToggleSwitch;
import com.android.settings.print.PrintSettingsFragment.ToggleSwitch.OnBeforeCheckedChangeListener; import com.android.settings.print.PrintSettingsFragment.ToggleSwitch.OnBeforeCheckedChangeListener;
@@ -159,9 +158,15 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
updateUiForArguments(); updateUiForArguments();
} }
@Override
public void onStart() {
super.onStart();
setupActionBarToggleSwitch(getActivity(), mToggleSwitch);
}
@Override @Override
public void onDestroyView() { public void onDestroyView() {
getActivity().getActionBar().setCustomView(null); removeActionBarToggleSwitch(getActivity());
if (mOldActivityTitle != null) { if (mOldActivityTitle != null) {
getActivity().getActionBar().setTitle(mOldActivityTitle); getActivity().getActionBar().setTitle(mOldActivityTitle);
} }
@@ -289,7 +294,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
mPrintersAdapter = new PrintersAdapter(); mPrintersAdapter = new PrintersAdapter();
mPrintersAdapter.registerDataSetObserver(mDataObserver); mPrintersAdapter.registerDataSetObserver(mDataObserver);
mToggleSwitch = createAndAddActionBarToggleSwitch(getActivity()); mToggleSwitch = createActionBarToggleSwitch(getActivity());
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
@@ -440,18 +445,25 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
} }
} }
private ToggleSwitch createAndAddActionBarToggleSwitch(Activity activity) { private ToggleSwitch createActionBarToggleSwitch(Activity activity) {
ToggleSwitch toggleSwitch = new ToggleSwitch(activity); ToggleSwitch toggleSwitch = new ToggleSwitch(activity);
final int padding = activity.getResources().getDimensionPixelSize( final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding); R.dimen.action_bar_switch_padding);
toggleSwitch.setPaddingRelative(0, 0, padding, 0); toggleSwitch.setPaddingRelative(0, 0, padding, 0);
return toggleSwitch;
}
private void setupActionBarToggleSwitch(Activity activity, ToggleSwitch toggleSwitch) {
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM); ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(toggleSwitch, activity.getActionBar().setCustomView(toggleSwitch,
new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.END)); Gravity.CENTER_VERTICAL | Gravity.END));
return toggleSwitch; }
private void removeActionBarToggleSwitch(Activity activity) {
activity.getActionBar().setCustomView(null);
} }
private static abstract class SettingsContentObserver extends ContentObserver { private static abstract class SettingsContentObserver extends ContentObserver {