From db1b6accac39778cb22ea1fe25f38575e8cc300b Mon Sep 17 00:00:00 2001 From: tom hsu Date: Mon, 11 Apr 2022 19:03:54 +0800 Subject: [PATCH] [Panlingual] Fix settings crash due to no content view. - Sometimes, listview may not created instantly, so move the action of addHeaderView after fragment finished the onResume; Bug: 228563549 Test: local Change-Id: Ie5d53c962bed35783decd374c743a168a98cbf6a --- .../localepicker/AppLocalePickerActivity.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/localepicker/AppLocalePickerActivity.java b/src/com/android/settings/localepicker/AppLocalePickerActivity.java index 4f23ae802c9..d3c855e658a 100644 --- a/src/com/android/settings/localepicker/AppLocalePickerActivity.java +++ b/src/com/android/settings/localepicker/AppLocalePickerActivity.java @@ -87,12 +87,6 @@ public class AppLocalePickerActivity extends SettingsBaseActivity launchLocalePickerPage(); } - @Override - public void onResume() { - super.onResume(); - mLocalePickerWithRegion.getListView().addHeaderView(launchAppLocaleDetailsPage()); - } - @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { @@ -136,7 +130,19 @@ public class AppLocalePickerActivity extends SettingsBaseActivity void launchLocalePickerPage() { // LocalePickerWithRegion use android.app.ListFragment. Thus, it can not use // getSupportFragmentManager() to add this into container. - getFragmentManager().beginTransaction() + android.app.FragmentManager fragmentManager = getFragmentManager(); + fragmentManager.registerFragmentLifecycleCallbacks( + new android.app.FragmentManager.FragmentLifecycleCallbacks() { + @Override + public void onFragmentResumed( + android.app.FragmentManager fm, + android.app.Fragment f) { + super.onFragmentResumed(fm, f); + mLocalePickerWithRegion.getListView() + .addHeaderView(launchAppLocaleDetailsPage()); + } + }, true); + fragmentManager.beginTransaction() .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) .replace(R.id.content_frame, mLocalePickerWithRegion) .commit();