Android 语言切换相关问题记录

代码片段 3xcn.com@站长2022年1月26日 pm12:12发布3年前 (2022)更新
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、 本站名称: 91易搜
2、 本站网址: https://www.91es.com/
3、 本站文章: 部分来源于网络,仅供站长学习和参考,若侵权请留言
导航号,我的单页导航

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...