最近一个项目中用到了多语言,可是在有些语言切换失效,挣扎许久终于找到问题了。

这是切换语言的代码:

public void changeAppLanguage(String key) {        Configuration configurat = getResources().getConfiguration();        if (getString(R.string.simplified_Chinese).equals(key)){            configurat.locale = Locale.SIMPLIFIED_CHINESE;        }else if (getString(R.string.traditional_Chinese).equals(key)){            configurat.locale = Locale.TRADITIONAL_CHINESE;        }else if (getString(R.string.English).equals(key)){            configurat.locale = Locale.ENGLISH;        } else {            Configuration config = getResources().getConfiguration();//获取系统的配置            getResources().updateConfiguration(config, getResources().getDisplayMetrics());//跟随系统语言            return;        }        DisplayMetrics metrics = getResources().getDisplayMetrics();        getResources().updateConfiguration(configurat, metrics);    }
文件夹的范围必须大于等于代码中的Locale的范围,解释看下方示例:

例如:字体为英文

1、文件夹为value-en,代码为Locale.ENGLISH或Locale.US(美国),Locale.CANADA(澳大利亚)……

2、文件夹为value-en-rUS,那么代码只能为Locale.US

如果文件夹的范文小于代码中的Locale的范围,那么程序调用的是默认value文件夹下的strings.xml。问题来了,如果删掉默认的strings.xml,那么调用的是哪个文件呢?答案是No,默认文件删掉程序会崩掉。


还有一个小小问题:


右边如果需要选择Any Region之外的语言,选中后直接Enter或者不要碰到图中区域然后点击OK,如果碰到图中区域,选择会跳转到Any Region。

更多相关文章

  1. C语言函数的递归(上)
  2. 15个Android很有用的代码片段
  3. android源码编译出现No private recovery resources for TARGET_
  4. Android捕获异常
  5. Android(安卓)Transition(Android过渡动画)
  6. PHP,Android,IOS通信之 AES128加解密案例程序
  7. Android之代码创建布局
  8. Android(安卓)代码名字-API级别-版本号-NDK版本对应关系
  9. Android(安卓)cannot access localhost?

随机推荐

  1. ActivityGroup中切换Activity
  2. Android隐藏导航栏并且禁止其滑出
  3. Android(安卓)网络连接 打开 Url下载 信
  4. Android(安卓)ProGuard使用要点!
  5. Android(安卓)Studio V3.12环境下TV开发
  6. android AV同步详解
  7. Android(安卓)Build系统bash filename to
  8. android 右上角添加菜单
  9. Java/Android引用类型及其使用全面分析
  10. [置顶] Android中保存数据的四种方法