gpt4 book ai didi

android 错误或配置对象的误用?

转载 作者:行者123 更新时间:2023-11-29 15:25:17 24 4
gpt4 key购买 nike

我们在 Application 对象的 onCreate 方法中有一些代码可以更改 ApplicationContext 配置中的默认本地。

它看起来像:

Locale locale = new Locale(sSavedLocale);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());

然后我们开始我们的主要 Activity ,然后从那里开始我们的其他 Activity 和任务。只要我不引起屏幕旋转等配置更改,一切都可以。如果我旋转屏幕,Locale 将返回到设备默认值,即使应用程序对象保持不变。

深入研究 ActivityThread 和其他内部类的 android 源代码,我可以看到 ApplicationContext 本身和 mainThread 中的上下文在配置更改事件时更改回默认值。

这对我来说似乎是一个错误,因为我在应用程序启动时在应用程序级别设置了配置,我可能想保持更改,除非发生本地配置更改,即使这样......

我没有检查我确实想应用的开放错误。有人认为我错了,这是可以的行为吗?

最佳答案

您可以将 onConfigurationChanged 添加到您的 Application 类。

    @Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (newConfig.locale != null)
{
Locale locale = new Locale(sSavedLocale);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
}
}

关于android 错误或配置对象的误用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14009870/

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