diff options
| author | Mihai Nita <mnita@google.com> | 2016-06-16 00:34:30 +0000 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2016-06-16 00:34:30 +0000 |
| commit | 44080ac5bf1584d7ececfdb82ae547faec45d320 (patch) | |
| tree | deb62fad87f8f6e8bd214b97d2689cd25ab382dc /core/java | |
| parent | c5ffdb9ee48905bacab0d5986d3eff2b399acd5e (diff) | |
| parent | c8c9afeacb03a110aef9ec6c07a1a807711197d7 (diff) | |
Merge \"Fix for NullPointerException in SuggestedLocaleAdapter\" into nyc-dev
am: c8c9afeacb
Change-Id: Iaa4df1af4a18ad0bc4e99a5bd47aa8f6c1357e50
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/com/android/internal/app/LocalePickerWithRegion.java | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/core/java/com/android/internal/app/LocalePickerWithRegion.java b/core/java/com/android/internal/app/LocalePickerWithRegion.java index 04929a76859e..d0719eeca04e 100644 --- a/core/java/com/android/internal/app/LocalePickerWithRegion.java +++ b/core/java/com/android/internal/app/LocalePickerWithRegion.java @@ -45,6 +45,7 @@ import java.util.Set; * default locale.</p> */ public class LocalePickerWithRegion extends ListFragment implements SearchView.OnQueryTextListener { + private static final String PARENT_FRAGMENT_NAME = "localeListEditor"; private SuggestedLocaleAdapter mAdapter; private LocaleSelectedListener mListener; @@ -130,11 +131,24 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O return true; } + private void returnToParentFrame() { + getFragmentManager().popBackStack(PARENT_FRAGMENT_NAME, + FragmentManager.POP_BACK_STACK_INCLUSIVE); + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); + if (mLocaleList == null) { + // The fragment was killed and restored by the FragmentManager. + // At this point we have no data, no listener. Just return, to prevend a NPE. + // Fixes b/28748150. Created b/29400003 for a cleaner solution. + returnToParentFrame(); + return; + } + final boolean countryMode = mParentLocale != null; final Locale sortingLocale = countryMode ? mParentLocale.getLocale() : Locale.getDefault(); mAdapter = new SuggestedLocaleAdapter(mLocaleList, countryMode); @@ -197,8 +211,7 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O if (mListener != null) { mListener.onLocaleSelected(locale); } - getFragmentManager().popBackStack("localeListEditor", - FragmentManager.POP_BACK_STACK_INCLUSIVE); + returnToParentFrame(); } else { LocalePickerWithRegion selector = LocalePickerWithRegion.createCountryPicker( getContext(), mListener, locale, mTranslatedOnly /* translate only */); @@ -208,8 +221,7 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O .replace(getId(), selector).addToBackStack(null) .commit(); } else { - getFragmentManager().popBackStack("localeListEditor", - FragmentManager.POP_BACK_STACK_INCLUSIVE); + returnToParentFrame(); } } } |
