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);