解决安卓(AndroidX)设置多语言失效问题

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.总结

项目中遇到的问题,虽是通过‘度娘’解决的,但还是要自己在这里记录下,加深下印象,避免下次再次入坑~~~顺便也给其他小伙伴提供更多的搜索资源吧,哈哈哈。。。。

你可能感兴趣的:(解决安卓(AndroidX)设置多语言失效问题)