diff options
author | Hai Zhang <zhanghai@google.com> | 2019-06-17 12:07:31 -0700 |
---|---|---|
committer | Hai Zhang <zhanghai@google.com> | 2019-06-17 21:29:08 +0000 |
commit | d971c365a9269c6b42ae4743d1f51972468410d0 (patch) | |
tree | 25b87a52192211eb64f780faff0ff5a530f83a80 | |
parent | 2556c5c7878e809d3f856ff2e969a3041d57d748 (diff) | |
download | android_packages_apps_PackageInstaller-d971c365a9269c6b42ae4743d1f51972468410d0.tar.gz android_packages_apps_PackageInstaller-d971c365a9269c6b42ae4743d1f51972468410d0.tar.bz2 android_packages_apps_PackageInstaller-d971c365a9269c6b42ae4743d1f51972468410d0.zip |
Fix candidate apps appearing after footer.
The footer should always be removed before being added again, and the
order must be reset as well to allow orderingAsAdded to work.
Fixes: 135463572
Test: manual
Change-Id: I46441f829645223ea93cadaa3ecb9ac36b0a9bdd
4 files changed, 17 insertions, 2 deletions
diff --git a/src/com/android/packageinstaller/role/ui/DefaultAppChildFragment.java b/src/com/android/packageinstaller/role/ui/DefaultAppChildFragment.java index 927a266b..1ceb8a39 100644 --- a/src/com/android/packageinstaller/role/ui/DefaultAppChildFragment.java +++ b/src/com/android/packageinstaller/role/ui/DefaultAppChildFragment.java @@ -128,10 +128,15 @@ public class DefaultAppChildFragment<PF extends PreferenceFragmentCompat preferenceFragment.setPreferenceScreen(preferenceScreen); } else { oldDescriptionPreference = preferenceScreen.findPreference(PREFERENCE_KEY_DESCRIPTION); + if (oldDescriptionPreference != null) { + preferenceScreen.removePreference(oldDescriptionPreference); + oldDescriptionPreference.setOrder(Preference.DEFAULT_ORDER); + } for (int i = preferenceScreen.getPreferenceCount() - 1; i >= 0; --i) { Preference preference = preferenceScreen.getPreference(i); preferenceScreen.removePreference(preference); + preference.setOrder(Preference.DEFAULT_ORDER); oldPreferences.put(preference.getKey(), preference); } } diff --git a/src/com/android/packageinstaller/role/ui/DefaultAppListChildFragment.java b/src/com/android/packageinstaller/role/ui/DefaultAppListChildFragment.java index 06af0e48..53264a1b 100644 --- a/src/com/android/packageinstaller/role/ui/DefaultAppListChildFragment.java +++ b/src/com/android/packageinstaller/role/ui/DefaultAppListChildFragment.java @@ -117,6 +117,7 @@ public class DefaultAppListChildFragment<PF extends PreferenceFragmentCompat if (oldWorkPreferenceCategory != null) { clearPreferences(oldWorkPreferenceCategory, oldWorkPreferences); preferenceScreen.removePreference(oldWorkPreferenceCategory); + oldWorkPreferenceCategory.setOrder(Preference.DEFAULT_ORDER); } clearPreferences(preferenceScreen, oldPreferences); } @@ -143,9 +144,11 @@ public class DefaultAppListChildFragment<PF extends PreferenceFragmentCompat private static void clearPreferences(@NonNull PreferenceGroup preferenceGroup, @NonNull ArrayMap<String, Preference> oldPreferences) { for (int i = preferenceGroup.getPreferenceCount() - 1; i >= 0; --i) { - Preference Preference = preferenceGroup.getPreference(i); + Preference preference = preferenceGroup.getPreference(i); - oldPreferences.put(Preference.getKey(), Preference); + preferenceGroup.removePreference(preference); + preference.setOrder(Preference.DEFAULT_ORDER); + oldPreferences.put(preference.getKey(), preference); } } diff --git a/src/com/android/packageinstaller/role/ui/SpecialAppAccessChildFragment.java b/src/com/android/packageinstaller/role/ui/SpecialAppAccessChildFragment.java index 1ba9df4d..24227a4a 100644 --- a/src/com/android/packageinstaller/role/ui/SpecialAppAccessChildFragment.java +++ b/src/com/android/packageinstaller/role/ui/SpecialAppAccessChildFragment.java @@ -116,10 +116,15 @@ public class SpecialAppAccessChildFragment<PF extends PreferenceFragmentCompat preferenceFragment.setPreferenceScreen(preferenceScreen); } else { oldDescriptionPreference = preferenceScreen.findPreference(PREFERENCE_KEY_DESCRIPTION); + if (oldDescriptionPreference != null) { + preferenceScreen.removePreference(oldDescriptionPreference); + oldDescriptionPreference.setOrder(Preference.DEFAULT_ORDER); + } for (int i = preferenceScreen.getPreferenceCount() - 1; i >= 0; --i) { Preference preference = preferenceScreen.getPreference(i); preferenceScreen.removePreference(preference); + preference.setOrder(Preference.DEFAULT_ORDER); oldPreferences.put(preference.getKey(), preference); } } diff --git a/src/com/android/packageinstaller/role/ui/SpecialAppAccessListChildFragment.java b/src/com/android/packageinstaller/role/ui/SpecialAppAccessListChildFragment.java index 2f9eb2d8..32620d34 100644 --- a/src/com/android/packageinstaller/role/ui/SpecialAppAccessListChildFragment.java +++ b/src/com/android/packageinstaller/role/ui/SpecialAppAccessListChildFragment.java @@ -85,6 +85,8 @@ public class SpecialAppAccessListChildFragment<PF extends PreferenceFragmentComp for (int i = preferenceScreen.getPreferenceCount() - 1; i >= 0; --i) { Preference preference = preferenceScreen.getPreference(i); + preferenceScreen.removePreference(preference); + preference.setOrder(Preference.DEFAULT_ORDER); oldPreferences.put(preference.getKey(), preference); } } |