问题:
我们习惯性的用 context.getResources() 来获取资源,比如getString(id)值,如果是多语言环境就可能报错 throw new NotFoundException("String resource ID #0x"+ Integer.toHexString(id));
问题分析:
我们知道 在Android项目下res下有各种语言的values,values-en ,values-zh-rCN 等。如果我们只是在values-zh-rCN下定义一个资源<string name="action_me">设置我</string>。如果当前的语言环境是 非中文的,比如英文,这样,系统先从values-en文件夹下寻找,如果找不到就会在values文件夹下寻找,如果都未找到就会因为匹配不到资源而报错NotFoundException。
问题解决:
方式一:在配置资源的时候,为了防止报错,最好在 values文件夹下配置一下资源,此文件夹匹配所有的语言环境
方式二:代码控制
<span style="white-space:pre"> </span>Resources resources = getResources();// 获得res资源对象
Configuration config = resources.getConfiguration();// 获得设置对象
DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。
config.locale = Locale.SIMPLIFIED_CHINESE; // 简体中文
resources.updateConfiguration(config, dm);
这样就会从values-zh-rCN下寻找资源了