使用Locale.getDefault()方法之前,应确保用户设备上已经设置了语言并且设备的语言设置是正确的。以下是一些可能会导致崩溃的代码示例:
String language = Locale.getDefault().getLanguage();
解决方法是检测是否有可用的语言,并手动设置默认语言。以下是代码示例:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Configuration config = getBaseContext().getResources().getConfiguration();
LocaleList defaultLocales = LocaleList.getDefault();
if (defaultLocales != null && defaultLocales.size() > 0) {
config.setLocale(defaultLocales.get(0));
} else {
config.setLocale(Locale.US);
}
getBaseContext().createConfigurationContext(config);
} else {
Locale locale = Locale.getDefault();
if (locale != null) {
Configuration config = getBaseContext().getResources().getConfiguration();
config.setLocale(locale);
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
}