Java 如何从应用程序中选择语言&x27;Android中的设置?

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) {

我试图在日历中添加日期,以遵循用户在应用程序设置(而不是系统)中选择的语言。 我在适配器中,当我使用mLocale时,应用程序将关闭

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
始终为空。如果你发布崩溃日志,我们可以更好地帮助你。