Merge "Fix for NullPointerException in SuggestedLocaleAdapter" into nyc-dev
This commit is contained in:
@@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user