1.背景
最近在做一个香港的项目中,需要设置简体、繁体以及英文三种语言,在切换语言后会重启MainActivity,此时会在BaseActivity中重写attachBaseContext方法,重新设置context从而实现语言切换(应该大部分同学都是使用该方法实现的)
2.遇到问题
项目开发完成在测试阶段,切换语言在大部分手机都是正常的,但是。。。突然一天测试拿来一款华为手机,说该手机上语言显示不正常(切换为繁体但是还是显示的简体)。what????这是什么操作,为什么会出现这么个问题?。。。瞬间一连串问题出现脑海里。。。。
3.解决问题
有问题当然要想办法解决咯!首先想到是不是这种方法实现上有缺陷?但立马又推翻了,只有这一款手机这样,不应该是这种情况的...然后想难道是这个手机的设置里面有设置了什么?就拿着这个手机进入设置中仔细翻了一遍,结果依然没有找到问题所在...到了现在,就想到了强大的‘度娘’了,一番搜索后,终于发现问题所在:部分手机升级androidX后切换语言不生效,此时我想到我的项目中用的库正是androidx的库,这个库怎么会造成这个问题?是这个库的兼容性问题?还是一脸懵逼。。。。既然返现问题的所在,那就继续搜索解决方案了。最终使用以下方法解决该问题:在你的BaseActivity中,重写applyOverrideConfiguration方法,如下:
@Override
public void applyOverrideConfiguration(ConfigurationoverrideConfiguration) {
// 兼容androidX在部分手机切换语言失败问题
if (overrideConfiguration != null) {
int uiMode = overrideConfiguration.uiMode;
overrideConfiguration.setTo(getBaseContext().getResources().getConfiguration());
overrideConfiguration.uiMode = uiMode;
}
super.applyOverrideConfiguration(overrideConfiguration);
}
4.总结
项目中遇到的问题,虽是通过‘度娘’解决的,但还是要自己在这里记录下,加深下印象,避免下次再次入坑~~~顺便也给其他小伙伴提供更多的搜索资源吧,哈哈哈。。。。
网友评论