0

我已经在我的应用程序中实现了克罗地亚语和英语的本地化。用户可以更改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 文件夹。为什么那里没有变化?最好的部分是我的主要活动中的字符串引用也正确。

蒂亚!

4

1 回答 1

0

我找到了解决方案。如果语言设置发生变化,我只是setContentView再次打电话,但我的主要活动是。onResume我不知道这是否是正确的方法,但它有效:)

于 2013-05-11T05:27:43.443 回答