Android 语言切换相关问题记录

代码片段  小知识  2022年1月26日 pm12:12发布3年前 (2022)更新 91es.com站长
95 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、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

Android studio优先引用framework.jar

前言记录一下Android Studio中编译apk优先使用自己编译的framework_classes.jar,这样就不会提示找不到资源啥的。网上也很多,但我这没成功,猜测可能跟Android Studio版本有关系。下面时我当前使用的版本,虽然又新版本,懒得更新。Android St...

顾城:远和近

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

[摘]repo命令参考手册

前言本文是摘抄的,主要是需要一些repo的使用。记录一下,方便自己查阅。正文repo用法的基本形式为:repo <COMMAND> <OPTIONS>可选项在[]中表示,例如许多命令接收一个项目列表作为参数,你可以通过一组名字或者p本地源目录的path来指定项目...

U盘分区格式的优缺点简介

FAT16、FAT32、NTFS、ExFAT正文FAT16:优点:兼容性最好,某些数码设备可能对FAT32和NTFS格式的存储卡支持不太好,因此只能使用FAT16。缺点:最大仅支持2GB分区,空间浪费大。FAT32:优点:兼容性好。缺点:单个文件不能超过4GB,不支...

苏童:我从来不敢夸耀童年的幸福

我从来不敢夸耀童年的幸福,事实上我的童年有点孤独,有点心事重重。我父母除了拥有四个孩子之外基本上一无所有。父亲在市里的一个机关上班,每天骑着一辆破旧的自行车来去匆匆;母亲在附近的水泥厂当工人,她年轻时曾经美丽的脸到了中年以后经常是浮肿着的,因为疲累过度,也因为身患多种疾病。多少年来,父母亲靠80多元...

Log工具类

抱歉,好久没更新了,主要是在折腾91易搜(直通车:https://www.91es.com/)。最近发现项目中很多都用重复的类,因此后续多整理一下常用的实用的工具类。或许以后直接复用即可。今天重新定义了一个Log工具类VLog。(这个网上一大把),直接上代码:public class...