Android getResources寻找匹配问题

问题:

我们习惯性的用 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下寻找资源了



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值