Locale更改后,可绘制资源未更改。活动重启

时间:2017-05-03 07:33:30

标签: android

我使用以下代码在我的应用中更改语言:

  protected void changeAppLangForUser(String lang) {
    Resources res = getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    Configuration conf = res.getConfiguration();
    conf.locale = new Locale(lang);
    res.updateConfiguration(conf, dm);
}

然后重启Activity:

   Intent intent = new Intent(getActivity(), SplashScreenActivity.class);
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
   getActivity().startActivity(intent);
   getActivity().overridePendingTransition(0, 0);

字符串按预期更改,但不存储在mipmap文件夹中的图标如下:enter image description here

这似乎很奇怪,但如果我肯定关闭应用程序,然后按启动图标再次启动它,它会显示预期语言的图标。我是否会遗漏某些内容或预期的行为?

1 个答案:

答案 0 :(得分:1)

我猜您的selector文件夹中有drawable个资源,使用mipmap图标。如果是这样,请尝试创建文件夹drawable-ru,然后将其粘贴到此新目录中。我以前遇到过这个问题;)