我能';t根据系统设置更改我的android应用程序上的语言
我有两个strings.xml文件,一个是default,另一个是value。问题是,无论我需要更改电话系统语言,我的应用程序字符串始终是中文。 但是,如果我使用这样的功能代码来改变语言,它是有效的我能';t根据系统设置更改我的android应用程序上的语言,android,locale,Android,Locale,我有两个strings.xml文件,一个是default,另一个是value。问题是,无论我需要更改电话系统语言,我的应用程序字符串始终是中文。 但是,如果我使用这样的功能代码来改变语言,它是有效的 public static final String EN = "en"; public static final String ZH = "zh"; public void changeLanguage(String language) { Resources resources
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);
}
所以问题是我可以通过代码更改语言,但不能通过系统语言设置自动更改语言。尝试使用以下代码
Locale myLocale = new Locale("zh");
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
请确认您没有在清单中添加参数“locale”,这将导致您的应用程序在系统区域设置更改时不会重新加载资源。My default strings.xml为英语。我想要的是,如果我去手机设置更改语言,如英语(美国),我的应用程序也可以自动更改。但情况并非如此。无论我改变任何语言,它总是显示中文(值zh)。在条件后使用此方法。Locale.setDefault(configuration.Locale)。每个活动?当然可以。使用“区域设置”声明configChanges的每个活动都不会被销毁,也不会在区域设置更改时重新加载资源。