Mic*_*ček 3 android localization android-8.0-oreo
我有多语言安卓应用。我需要设置与用户在设备设置中不同的语言。当我的应用程序启动时,用户从首选语言中进行选择。在 android 7 及更低版本上,我在我的应用程序类中使用 updateconfuguration。但此解决方案不适用于 android 8。我尝试在每个活动中使用 attachBaseContext 中的更新配置,但没有成功。
@codespy 有正确的想法,但要提供更多细节:
我的应用程序中遇到了完全相同的问题。我最初认为问题是使用这种已弃用的设置自定义语言的方法:
Locale.setDefault(newLocale);
Configuration config = new Configuration();
// TODO fix deprecation issues
config.locale = newLocale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)
所以我尝试在这个答案的帮助下使用createConfigurationContext,但这也不起作用(而且有几个陷阱更复杂)。
经过大量调试后,我注意到了一些事情:
MyAdapter adapter = new MyAdapter(getApplicationContext(), list);
Run Code Online (Sandbox Code Playgroud)
getApplicationContext()凭直觉,我替换为getContext(),突然间我的项目列表使用了正确的语言。
原来奥利奥getApplicationContext()不再尊重您设置的自定义语言环境。您必须改用活动的上下文。
(请注意:我知道我不应该为此使用应用程序上下文,但这是一个存在许多此类问题的遗留应用程序。修复它们是我每天都在努力的事情。)
| 归档时间: |
|
| 查看次数: |
5068 次 |
| 最近记录: |