我已在我的应用中实现了克罗地亚语和英语的本地化。用户可以使用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文件夹。为什么不改变呢?最好的部分是我的主要活动的字符串引用也是正确的。
TIA!
答案 0 :(得分:0)
我找到了解决方案。如果语言设置发生更改,我只需再次调用setContentView
,但在onResume
中调用我的主要活动。我不知道这是否是正确的方法,但它有效:)