我有两个strings.xml文件,一个是默认文件,另一个是values-zh。问题是我需要更改电话系统语言,我的应用程序字符串总是中文。 但是,如果我使用这样的功能代码来改变语言,它就可以了。
public static final String EN = "en";
public static final String ZH = "zh";
public void changeLanguage(String language) {
Resources resources = mContext.getResources();
Configuration configuration = resources.getConfiguration();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
if(language.equals(ZH)){
configuration.locale = Locale.CHINESE;
}else if(language.equals(EN)){
configuration.locale = Locale.ENGLISH;
}else {
configuration.locale = Locale.ENGLISH;
language = EN;
}
resources.updateConfiguration(configuration , displayMetrics);
AbSharedUtil.putString(mContext , "language" , language);
mContext.finish();
Intent intent = new Intent(mContext , MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
mContext.startActivity(intent);
}
所以问题是我可以通过代码更改语言,但我不能自动通过系统语言设置更改它。
答案 0 :(得分:0)
尝试使用以下代码。
Locale myLocale = new Locale("zh");
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
答案 1 :(得分:0)
验证您是否在清单中添加了带有参数“locale”的android:configChanges,这会导致您的应用在系统区域设置更改时不会重新加载资源。