Merge "Fix for NullPointerException in SuggestedLocaleAdapter" into nyc-dev

This commit is contained in:
Mihai Niță
2016-06-16 00:28:35 +00:00
committed by Android (Google) Code Review

View File

@@ -45,6 +45,7 @@ import java.util.Set;
* default locale.</p> * default locale.</p>
*/ */
public class LocalePickerWithRegion extends ListFragment implements SearchView.OnQueryTextListener { public class LocalePickerWithRegion extends ListFragment implements SearchView.OnQueryTextListener {
private static final String PARENT_FRAGMENT_NAME = "localeListEditor";
private SuggestedLocaleAdapter mAdapter; private SuggestedLocaleAdapter mAdapter;
private LocaleSelectedListener mListener; private LocaleSelectedListener mListener;
@@ -130,11 +131,24 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O
return true; return true;
} }
private void returnToParentFrame() {
getFragmentManager().popBackStack(PARENT_FRAGMENT_NAME,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setHasOptionsMenu(true); 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 boolean countryMode = mParentLocale != null;
final Locale sortingLocale = countryMode ? mParentLocale.getLocale() : Locale.getDefault(); final Locale sortingLocale = countryMode ? mParentLocale.getLocale() : Locale.getDefault();
mAdapter = new SuggestedLocaleAdapter(mLocaleList, countryMode); mAdapter = new SuggestedLocaleAdapter(mLocaleList, countryMode);
@@ -197,8 +211,7 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O
if (mListener != null) { if (mListener != null) {
mListener.onLocaleSelected(locale); mListener.onLocaleSelected(locale);
} }
getFragmentManager().popBackStack("localeListEditor", returnToParentFrame();
FragmentManager.POP_BACK_STACK_INCLUSIVE);
} else { } else {
LocalePickerWithRegion selector = LocalePickerWithRegion.createCountryPicker( LocalePickerWithRegion selector = LocalePickerWithRegion.createCountryPicker(
getContext(), mListener, locale, mTranslatedOnly /* translate only */); getContext(), mListener, locale, mTranslatedOnly /* translate only */);
@@ -208,8 +221,7 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O
.replace(getId(), selector).addToBackStack(null) .replace(getId(), selector).addToBackStack(null)
.commit(); .commit();
} else { } else {
getFragmentManager().popBackStack("localeListEditor", returnToParentFrame();
FragmentManager.POP_BACK_STACK_INCLUSIVE);
} }
} }
} }