java - 用户以编程方式更改应用名称后,应用名称不会更改语言

标签 java android string

我为我的用户提供了更改应用语言的机会。我用这个:

public void languageToLoad(String language) {
    String lang = language;
    Locale locale = new Locale(lang);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config,
            getBaseContext().getResources().getDisplayMetrics());
}

英语: languageToLoad(en) 或法语: languageToLoad(fr)

但我的问题是应用程序名称不会更改。

strings.xml(en):

<string name="app_name">SoccerPro</string>

strings.xml(fr):

<string name="app_name">FootballPro</string>

每个字符串都会更改其值,但“app_name”不会更改。

如果设备语言发生变化,那么它也会发生变化,但不像我的方式。我做错了什么?

最佳答案

您对 updateConfiguration() 的调用最多会影响您的进程。它不影响其他进程。这意味着除非您的应用主屏幕,否则主屏幕不会改变。 updateConfiguration() 不会在系统级别影响用户的语言,据我所知,普通的 SDK 应用程序无法做到这一点。

关于java - 用户以编程方式更改应用名称后,应用名称不会更改语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29722189/

相关文章:

java - 错误 : Bound mismatch, Collections.sort、接口(interface)、compareTo 方法

android - 在应用计费中实现哪种方式?

string.split 中的 Java outOfMemory 异常

windows - 如何使用Windows命令行查找文件中字符串的出现次数?

android - 如何在 Android 中创建刮刮卡?

android - 使用 Android Studio 将文件转换为字符串,然后转换为 Base64 Fromate

java - 生成与双引号字符串完全匹配的过滤器机制,并包含与单引号类似的功能

java - 无法解析符号 'MODE_PRIVATE'

java - Android - 从 AsyncTask 结果获取对象

android - 如果用户拒绝打开蓝牙,则退出 Android 应用程序