summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mihai Niță <mnita@google.com> 2016-06-16 00:41:59 +0000
committer android-build-merger <android-build-merger@google.com> 2016-06-16 00:41:59 +0000
commitba183ff406a6eb87b494ccdbae5c86c44496d85a (patch)
tree2603f7e19792fa062abbc3da165327d6f20dab1c
parent5d016b2335766b2e40294a7a12f7ebd7a24be30e (diff)
parent44080ac5bf1584d7ececfdb82ae547faec45d320 (diff)
Merge \\"Fix for NullPointerException in SuggestedLocaleAdapter\\" into nyc-dev am: c8c9afeacb
am: 44080ac5bf Change-Id: Ib9f1021c18187364d23058fdff39405a00402efe
-rw-r--r--core/java/com/android/internal/app/LocalePickerWithRegion.java20
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();
}
}
}