gpt4 book ai didi

android - 在 Android 中以编程方式更改语言

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:06 25 4
gpt4 key购买 nike

我有多语言安卓应用。我需要设置与用户在设备设置中不同的语言。当我的应用程序启动时,用户可以选择首选语言。在 android 7 及以下版本中,我在我的应用程序类中使用了 updateconfiguration。但此解决方案不适用于 android 8。我尝试在每个 Activity 中使用 attachBaseContext 中的更新配置,但没有成功。

最佳答案

@codespy 有正确的想法,但要提供更多细节:

我在我的应用程序中遇到了完全相同的问题。我最初认为问题出在使用这种设置自定义语言的已弃用方法:

Locale.setDefault(newLocale);
Configuration config = new Configuration();
// TODO fix deprecation issues
config.locale = newLocale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());

所以我尝试使用 createConfigurationContext , 在 this answer 的帮助下, 但这也不起作用(而且有几个陷阱要复杂得多)。

经过大量调试,我注意到了一些事情:

MyAdapter adapter = new MyAdapter(getApplicationContext(), list);

凭直觉,我将 getApplicationContext() 替换为 getContext(),突然间我的项目列表使用了正确的语言。

Oreo 的 getApplicationContext() 不再遵循您设置的自定义语言环境。您必须改用 Activity 的上下文。

(请注意:我知道我不应该为此使用应用程序上下文,但这是一个存在许多此类问题的遗留应用程序。修复这些问题是我每天都在努力解决的问题。)

关于android - 在 Android 中以编程方式更改语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46034623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com