android 7.0 ,6.0多语言切换失效,9.0,10.0正常

最近做了一个海外的项目,做中、英、泰三种语言的切换,切换多语言时候重启HomeActivity,在Application和BaseActivity里重写attachBaseContext方法去设置Context。
曾经的切换方式很简单:

 /**     * 此方法先于 onCreate()方法执行     * @param newBase     */    @Override    protected void attachBaseContext(Context newBase) {             //获取我们存储的语言环境  "en","zh"        String language = SpUtil.getInstance(MiaApplication.getApp()).getString(SpUtil.LANGUAGE);        /**         * attach对应语言环境下的context         */        super.attachBaseContext(LanguageUtil.attachBaseContext(newBase, language));    }

测试机版本8.0以下,结果切换多语言竟然无效,8.0以上的手机正常切换,在github上拉了个demo,运行下来正常,然后再到copy到自己项目里面就废了。demo用的是support包,项目用的是AndroidX包,然后上网搜索,根本搜不到任何相关的帖子,都2020年以前的,在国外的帖子上找到了原因,因为引用了androidx.appcompat:appcompat:1.1.0导致多语言切换失效,谷歌也是坑人啊。

解决方案
在BaseActivity里面修改,做androidx的兼容即可完美解决:

public class BaseActivity extends AppCompatActivity {         /**     * 此方法先于 onCreate()方法执行     * @param newBase     */    @Override    protected void attachBaseContext(Context newBase) {             //获取我们存储的语言环境  "en","zh"        String language = SpUtil.getInstance(MiaApplication.getApp()).getString(SpUtil.LANGUAGE);        /**         * attach对应语言环境下的context         */        super.attachBaseContext(LanguageUtil.attachBaseContext(newBase, language));    }    @Override    public void applyOverrideConfiguration(Configuration overrideConfiguration) {             // 兼容androidX在部分手机切换语言失败问题        if (overrideConfiguration != null) {                 int uiMode = overrideConfiguration.uiMode;            overrideConfiguration.setTo(getBaseContext().getResources().getConfiguration());            overrideConfiguration.uiMode = uiMode;        }        super.applyOverrideConfiguration(overrideConfiguration);    }}

更多相关文章

  1. C语言函数的递归(上)
  2. android 中定时器的几种用法总结
  3. Android(安卓)中TextView 添加超链接
  4. android内核编译方法 转载
  5. android中MediaPlayer的用法
  6. Android梳理不常用widget篇
  7. Android(安卓)Hook神器:XPosed入门与登陆劫持演示
  8. Android(安卓)TTS学习——TTS初体验
  9. Android(安卓)NDK 环境配置

随机推荐

  1. [Android--Tool]Android如何将他人的代码
  2. android 笔记 ---- 使用Hessian与Java服
  3. Android样式的开发:shape篇
  4. Android(安卓)multidex 使用 与 实现原理
  5. [置顶] 【电子书下载】《Android应用程序
  6. Android 中的Parcelable序列化对象
  7. Android SDK 2.3与Eclipse最新版开发环境
  8. Android权限安全(5)组件的android:export
  9. 深入浅出Android消息系统之一
  10. [转]Jollen 的 Android 教學,#4: 使用 XM