问题描述
我正在尝试按照用户在应用程序设置(而非系统)中选择的语言在日历中添加日期。 我在适配器中,当我使用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);
}
}
解决方法
您可以使用SharedPreferences
:https://developer.android.com/reference/android/content/SharedPreferences
SharedPreferences settings = getSharedPreferences("PREF_FILE_NAME",MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("lang","US_EN");
editor.apply();
以后您可以检索它:
SharedPreferences settings = getSharedPreferences("PREF_FILE_NAME",MODE_PRIVATE);
settings.getString("lang","DEFAULT_LANGUAGE");
我的偏好设置文件的名称保存为String
中的res/values/strings
。
您可以从资源中获取它:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
return getResources().getConfiguration().getLocaleList().get(0).getLanguage();
else
return getResources().getConfiguration().getLocale().getLanguage();