Android 多语言APP实现方案和遇到的坑

本文探讨了在不同Android版本中实现多语言APP的复杂性。通过修改资源配置,作者发现实现方式在Android6及以下有效,但在更高版本中需在Application和每个Activity中调用方法。文章揭示了不同Android版本下资源对象的行为差异。
摘要由CSDN通过智能技术生成

公司需要用到多语言APP,同微信,在设置界面可以设置跟随系统,或者自行设置APP内语言。
搜了很多资料,大概是实现方式如下;
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = locale;
res.updateConfiguration(conf, dm);
所以在application类的oncreate调用了上述方法,之后发现奇怪的事,发现内部很多文字可以设置当前语言,很多没有显示过来。
经过实测才发现 context.getResources(),对象在不同的Android版本中,系统API方式不一;
android 6及以下,全局resource单例;
android 7 每个context对应一个resource,但是resource.getConfiguration()单例
android 8及以上,resource和getConfiguration都为多例

故,上述实现方式在android6及以下能生效
在android6以上,需要在application 的oncreate上调用一次上述方法,在每个Activity也调用一次;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值