本地化不适用于主要活动

时间:2013-05-10 17:01:58

标签: android android-activity localization

我已在我的应用中实现了克罗地亚语和英语的本地化。用户可以使用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文件夹中有这样的结构:

enter image description here

在文件夹中,drawable-en-hdpi和drawable-hr-hdpi是当然具有相同名称的图像。

现在的问题是,当我更改PreferenceActivity中的语言时,一切正常,在我的应用程序的每个活动中,语言都会发生变化(所有字符串引用和可绘制引用都是正确的)。仅在我的主要活动中,可绘制引用始终来自drawable-hr-hdpi文件夹。为什么不改变呢?最好的部分是我的主要活动的字符串引用也是正确的。

TIA!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。如果语言设置发生更改,我只需再次调用setContentView,但在onResume中调用我的主要活动。我不知道这是否是正确的方法,但它有效:)