From cec01e38efff73679827253c1143b1e250919768 Mon Sep 17 00:00:00 2001 From: Zoey Chen Date: Mon, 24 Apr 2023 11:56:05 +0000 Subject: [PATCH] [Regional Preference] Do not get child fragment if the fragment is not added Bug: 279376395 Test: local test Change-Id: I352597dedf2ba7770936d44d09aa111762f94502 --- .../settings/localepicker/LocaleDialogFragment.java | 11 +++++++++-- .../localepicker/LocaleDragAndDropAdapter.java | 5 +++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/localepicker/LocaleDialogFragment.java b/src/com/android/settings/localepicker/LocaleDialogFragment.java index a3bc0073cc2..2ee2e8bb9d7 100644 --- a/src/com/android/settings/localepicker/LocaleDialogFragment.java +++ b/src/com/android/settings/localepicker/LocaleDialogFragment.java @@ -51,20 +51,27 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment { static final String ARG_TARGET_LOCALE = "arg_target_locale"; static final String ARG_RESULT_RECEIVER = "arg_result_receiver"; + public static LocaleDialogFragment newInstance() { + return new LocaleDialogFragment(); + } + /** * Show dialog */ - public static void show( + public void show( @NonNull RestrictedSettingsFragment fragment, int dialogType, LocaleStore.LocaleInfo localeInfo) { + if (!isAdded()) { + return; + } show(fragment, dialogType, localeInfo, null); } /** * Show dialog */ - public static void show( + public void show( @NonNull RestrictedSettingsFragment fragment, int dialogType, LocaleStore.LocaleInfo localeInfo, diff --git a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java index bece4140153..2223db06562 100644 --- a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java +++ b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java @@ -319,8 +319,9 @@ class LocaleDragAndDropAdapter public void doTheUpdateWithMovingLocaleItem() { LocaleStore.LocaleInfo localeInfo = mFeedItemList.get(0); + final LocaleDialogFragment fragment = LocaleDialogFragment.newInstance(); if (!localeInfo.getLocale().equals(LocalePicker.getLocales().get(0))) { - LocaleDialogFragment.show(mParent, + fragment.show(mParent, LocaleDialogFragment.DIALOG_CONFIRM_SYSTEM_DEFAULT, localeInfo, new ResultReceiver(new Handler(Looper.getMainLooper())) { @@ -332,7 +333,7 @@ class LocaleDragAndDropAdapter if (resultCode == Activity.RESULT_OK) { doTheUpdate(); if (!localeInfo.isTranslated()) { - LocaleDialogFragment.show(mParent, + fragment.show(mParent, LocaleDialogFragment .DIALOG_NOT_AVAILABLE_LOCALE, localeInfo);