我已经在我的应用程序中实现了克罗地亚语和英语的本地化。用户可以更改PreferenceActivity
.
这是代码:
public class SettingsActivity extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {...}
@Override
protected void onResume() {...}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("language")) {
String language= sharedPreferences.getString(key, "1");
if (language.equals("2")) {
switchLang("en");
} else {
switchLang("hr");
}
}
}
private void switchLang(String langCode) {
Locale locale = new Locale(langCode);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
onCreate(null);
}
}
我的 res 文件夹中有这样的结构:
在文件夹中 drawable-en-hdpi 和 drawable-hr-hdpi 当然是具有相同名称的图像。
现在的问题是,当我在PreferenceActivity
我的应用程序的每个活动中更改语言时一切正常,语言更改(所有字符串引用和可绘制引用都是正确的)。只有在我的主要活动中,可绘制引用始终来自 drawable-hr-hdpi 文件夹。为什么那里没有变化?最好的部分是我的主要活动中的字符串引用也正确。
蒂亚!