Java 如何从应用程序中选择语言&x27;Android中的设置?
我试图在日历中添加日期,以遵循用户在应用程序设置(而不是系统)中选择的语言。 我在适配器中,当我使用mLocale时,应用程序将关闭Java 如何从应用程序中选择语言&x27;Android中的设置?,java,android,locale,Java,Android,Locale,我试图在日历中添加日期,以遵循用户在应用程序设置(而不是系统)中选择的语言。 我在适配器中,当我使用mLocale时,应用程序将关闭 public static class DayOfWeekViewHolder extends RecyclerView.ViewHolder { private Context mContext; public DayOfWeekViewHolder(ViewGroup parent, LayoutInflater inflater) {
public static class DayOfWeekViewHolder extends RecyclerView.ViewHolder {
private Context mContext;
public DayOfWeekViewHolder(ViewGroup parent, LayoutInflater inflater) {
super(inflater.inflate(R.layout.view_calendar_header_date, parent, false));
}
public void setData(int dayOfWeek) {
String mLocale = mContext.getResources().getConfiguration().getLocales().get(0).getLanguage();
LocalDate date = LocalDate.now().minusDays(1);
System.out.println("Test 1" + mLocale);
date = date.plusDays(dayOfWeek);
String dayText = date.getDayOfWeek().toString();
String formatedDate = date.format(DateTimeFormatter.ofPattern("EEE", Locale.forLanguageTag(Locale.getDefault().getCountry())));
((TextView) itemView).setText(formatedDate);
itemView.setContentDescription(dayText);
}
}
您可以使用
SharedReferences
:
SharedReferences设置=GetSharedReferences(“首选文件名”,模式为私有);
SharedReferences.Editor=settings.edit();
编辑:putString(“lang”,“US_EN”);
editor.apply();
稍后您可以检索它:
SharedReferences设置=GetSharedReferences(“首选文件名”,模式为私有);
getString(“lang”,“默认语言”);
我在
res/values/strings
中将首选项文件的名称保存为String
,您可以从参考资料中获取它:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
return getResources().getConfiguration().getLocaleList().get(0).getLanguage();
else
return getResources().getConfiguration().getLocale().getLanguage();
资源不会返回系统区域设置?不,它们返回应用程序区域设置。您可以更改应用程序区域设置,它可以不同于系统区域设置。它可以工作,但当我在适配器中使用它时,应用程序会关闭。崩溃日志中有什么内容?看起来您的
mContext
始终为空。如果你发布崩溃日志,我们可以更好地帮助你。