我无法通过系统设置更改我的Android应用程序上的语言

时间:2017-05-17 11:41:57

标签: android locale

我有两个strings.xml文件,一个是默认文件,另一个是values-zh。问题是我需要更改电话系统语言,我的应用程序字符串总是中文。 但是,如果我使用这样的功能代码来改变语言,它就可以了。

 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);



}

所以问题是我可以通过代码更改语言,但我不能自动通过系统语言设置更改它。

2 个答案:

答案 0 :(得分:0)

尝试使用以下代码。

        Locale myLocale = new Locale("zh");
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        res.updateConfiguration(conf, dm);

答案 1 :(得分:0)

验证您是否在清单中添加了带有参数“locale”的android:configChanges,这会导致您的应用在系统区域设置更改时不会重新加载资源。