cod*_*ber 1 configuration android locale
我们在Application对象的onCreate方法中有一些代码可以更改ApplicationContext配置中的默认本地。
它看起来像:
Locale locale = new Locale(sSavedLocale);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)
然后我们开始主要活动,然后从那里开始其他活动和任务。只要我不引起屏幕旋转等配置更改,一切都OK。如果我旋转屏幕,即使应用程序对象保持不变,语言环境也会返回到设备默认值。
深入研究android的ActivityThread和其他内部类的代码,我可以看到ApplicationContext本身,并且在配置更改事件中mainThread中的上下文已更改回默认值。
对我来说似乎是个错误,因为ii在启动应用程序时在应用程序级别设置了配置,除非本地配置发生更改,否则我可能希望保持更改。
我没有检查过我想应用的开放错误。有人认为我错了,这是可以的行为吗?
您可以添加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());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
549 次 |
| 最近记录: |