Update list preference value onStop
Instead of updating preference when the back button is clicked to make
sure the preference is updated when leaving the fragment.
Bug: 168266123
Test: Manual
Change-Id: Ib16e085ab1c037fdab68d02a7db4c756fde92a97
diff --git a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/preference/ListPreferenceFragment.java b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/preference/ListPreferenceFragment.java
index 348ec54..5a34dcd 100644
--- a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/preference/ListPreferenceFragment.java
+++ b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/preference/ListPreferenceFragment.java
@@ -55,17 +55,6 @@
private ListPreference mPreference;
private CarUiContentListItem mSelectedItem;
private int mSelectedIndex = -1;
- private final Toolbar.OnBackListener mOnBackListener = () -> {
- if (mSelectedIndex >= 0 && mPreference != null) {
- String entryValue = mPreference.getEntryValues()[mSelectedIndex].toString();
-
- if (mPreference.callChangeListener(entryValue)) {
- mPreference.setValue(entryValue);
- }
- }
-
- return false;
- };
/**
* Returns a new instance of {@link ListPreferenceFragment} for the {@link ListPreference} with
@@ -166,7 +155,6 @@
@Override
public void onStart() {
super.onStart();
- mToolbar.registerOnBackListener(mOnBackListener);
Insets insets = CarUi.getInsets(getActivity());
if (insets != null) {
onCarUiInsetsChanged(insets);
@@ -176,7 +164,17 @@
@Override
public void onStop() {
super.onStop();
- mToolbar.unregisterOnBackListener(mOnBackListener);
+ updatePreference();
+ }
+
+ private void updatePreference() {
+ if (mSelectedIndex >= 0 && mPreference != null) {
+ String entryValue = mPreference.getEntryValues()[mSelectedIndex].toString();
+
+ if (mPreference.callChangeListener(entryValue)) {
+ mPreference.setValue(entryValue);
+ }
+ }
}
private ListPreference getListPreference() {
diff --git a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java
index 1d4a3a2..44c5f43 100644
--- a/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java
+++ b/car-ui-lib/car-ui-lib/src/main/java/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java
@@ -55,13 +55,6 @@
private CarUiMultiSelectListPreference mPreference;
private Set<String> mNewValues;
private ToolbarController mToolbar;
- private final Toolbar.OnBackListener mOnBackListener = () -> {
- if (mPreference.callChangeListener(mNewValues)) {
- mPreference.setValues(mNewValues);
- }
-
- return false;
- };
/**
* Returns a new instance of {@link MultiSelectListPreferenceFragment} for the {@link
@@ -161,7 +154,6 @@
@Override
public void onStart() {
super.onStart();
- mToolbar.registerOnBackListener(mOnBackListener);
Insets insets = CarUi.getInsets(getActivity());
if (insets != null) {
onCarUiInsetsChanged(insets);
@@ -171,7 +163,13 @@
@Override
public void onStop() {
super.onStop();
- mToolbar.unregisterOnBackListener(mOnBackListener);
+ updatePreference();
+ }
+
+ private void updatePreference() {
+ if (mPreference.callChangeListener(mNewValues)) {
+ mPreference.setValues(mNewValues);
+ }
}
private CarUiMultiSelectListPreference getPreference() {