Android 语言切换相关问题记录

代码片段  小知识  2022年1月26日 pm12:12发布3年前 (2022)更新 城堡大人
131 0 0

前言

Android切换语言是很常用的功能,项目中一般都会要做做英文和中文两种语言的切换,这里就简单的记录一下改变语言相关的问题。

正文

圆规正传

监听语言切换的广播

Intent.ACTION_LOCALE_CHANGED
//如下是完整的定义
public static final String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED";

改变语言后Activity被重启了

一般情况下,改变语言Activity是不让其重启的。这个是Android的一个机制,比如地区、语言、屏幕旋转等的改变需要重新刷新。

改变语言,为了不让重启,可在AndroidMainfest.xml中Activity中配置如下:

//只针对语言改变
android:configChanges="locale|layoutDirection|keyboard"

当然,为了针对其他的改变导致Activity的改变,可以考虑多配置一些,如下:

    <activity
        android:configChanges="orientation|uiMode|keyboard|keyboardHidden|fontScale|mcc|mnc|locale|touchscreen|navigation|screenLayout|colorMode"
        android:name=".MainActivity"
        android:launchMode="singleInstance">

        </activity>

获取当前系统的语言

 String language = Locale.getDefault().getLanguage();

或者

Configuration config = MyApp.getContext().getResources().getConfiguration();
config.getLocales(); // 输出 en_US 或者zh_CN

这个MyApp.getContext()是Application中定义的,也就是当前的this。

改变语言后推荐使用Application的context获取资源文件

在Activity或者Fragment中通过语言改变后,如果在监听语言变化广播中改变语言。

获取资源文件时,推荐使用Application的context,(上一篇文《Android系统切换语言后,Activity中的文本没有改变》有简单测试)

MyApp.getContext().getResources()

参考文章

  1. Android 获取当前系统语言及地区
  2. [Android] 切换语言后避免Activity重启方法
  3. AndroidManifest.xml的configChanges配置简介
  4. Android系统切换语言后,Activity中的文本没有改变

 历史上的今天

  1. 2018: bit,byte,位,字节等介绍(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

Beyond Compare4 30天试用到期的解决办法

网上有很多关于Beyond Compare4破解方法,国内还是没有习惯付费软件,也有偶尔跟着潮流。这个软件功能太强大了,有时候不得不佩服开发者,我只是偶尔用一下,下面是摘抄网络的内容,记录于此,方便自己查阅。隐藏内容!密码验证后才能查看!提交PS: 上面只是个人观点,也就偶尔使用此工具,如果是...

顾城:远和近

​你一会看我一会看云 我觉得你看我时很远你看云时很近

Google Nexus 7 adb devices时出现 ???????????? no permissions

我在使用Nexus 7平板时,在使用adb devices后出现如下:List of devices attached???????????? no permissions同时在DDMS中显示设备名也显示????????????,也无法显示进程名,无法查看log。解决方法如下:...

季羡林:漫谈人生的意义和价值

当我还是一个青年大学生的时候,报纸杂志上曾刮起一阵讨论人生的意义与价值的微风,文章写了一些,议论也发表了一通。我看过一些文章,但自己并没有参加进去。原因是,有的文章不知所云,我看不懂。更重要的是,我认为这种讨论本身就无意义,无价值,不如实实在在地干几件事好。时光流逝,一转眼,自己已经到了望九之年,...

穆旦:春

绿色的火焰在草上摇曳,他渴求着拥抱你,花朵。反抗着土地,花朵伸出来,当暖风吹来烦恼,或者欢乐。如果你是醒了,推开窗子,看这满园的欲望多么美丽。 蓝天下,为永远的谜蛊惑着的是我们二十岁的紧闭的肉体,一如那泥土做成的鸟的歌,你们被点燃,卷曲又卷曲,却无处归依。呵,光,影,...

[摘]WindowManger层级记录

前言记录一下Android中WindowManger的层级相关知识。摘抄于此,方便自己查阅。本文摘抄于《Android中WindowManger的层级分析》正文Window 分类应用 Window(ApplicationWindow: 对应一个 Acitivity)子 Window...