Fixed
Status Update
Comments
so...@gmail.com <so...@gmail.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit a735aaa4d06c90454de772fae5a02f6cbde210b3
Author: Jeremy Woods <jbwoods@google.com>
Date: Tue Feb 28 22:58:23 2023
Ensure FragmentNavigator destroys intermediate entries on popUpTo
We need to make sure that when Fragment are destroyed their entries are
also always destroyed.
RelNote: "Fixes a regressions in previous release that caused the wrong
BottomNav menu item to be highlighted when using system back to go
between tabs."
Test: Added FragmentNavigatorTest
Bug: 270447657
Change-Id: I634f6047b7016bcb8b690047605a6f66b2dc1438
M navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
M navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.kt
https://android-review.googlesource.com/2461556
Branch: androidx-main
commit a735aaa4d06c90454de772fae5a02f6cbde210b3
Author: Jeremy Woods <jbwoods@google.com>
Date: Tue Feb 28 22:58:23 2023
Ensure FragmentNavigator destroys intermediate entries on popUpTo
We need to make sure that when Fragment are destroyed their entries are
also always destroyed.
RelNote: "Fixes a regressions in previous release that caused the wrong
BottomNav menu item to be highlighted when using system back to go
between tabs."
Test: Added FragmentNavigatorTest
Bug: 270447657
Change-Id: I634f6047b7016bcb8b690047605a6f66b2dc1438
M navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/FragmentNavigatorTest.kt
M navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/FragmentNavigator.kt
Description
When using a SummaryProvider with MultiSelectListPreference to display a summary of the currently selected items, SummaryProvider#provideSummary() is not called so the summary is not updated to represent the newly selected items. This is because notifyChanged() is not called from within setValues().
Comparison of code from ListPreference and MultiSelectListPreference
--- ListPreference ---
public void setValue(String value) {
// Always persist/notify the first time.
final boolean changed = !TextUtils.equals(mValue, value);
if (changed || !mValueSet) {
mValue = value;
mValueSet = true;
persistString(value);
if (changed) {
notifyChanged();
}
}
}
--- --- ---
--- MultiSelectListPreference ---
public void setValues(Set<String> values) {
mValues.clear();
mValues.addAll(values);
persistStringSet(values);
}
--- --- ---
Current workaround: subclass MultiSelectListPreference and override:
@Override
public void setValues(Set<String> values) {
super.setValues(values);
notifyChanged();
}