【发布时间】:2013-02-26 13:22:14
【问题描述】:
我的设备系统是英文。
在我的 AndroidManifest.xml 中,我定义了我的活动来检查配置更改:
<activity
...
android:configChanges="locale" >
在我的Activity中,我添加了函数:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Locale.setDefault(newConfig.locale);
Log.v("*Locale is*", newConfig.locale.toString());
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
在我的ActivityonResume()中,我调用了上面的函数:
@Override
public void onResume() {
super.onResume();
// I explicitely force my app to display in Finnish
Configuration newConfig = new Configuration();
newConfig.locale = new Locale("fi");
onConfigurationChanged(newConfig);
}
(My Activity 托管 Fragment,每个屏幕视图都是一个 Fragment。)
使用上面的代码,我想我的应用在启动时会以芬兰语显示。它在 Android 4.1.1 上运行良好。
但是当我在 Android 2.3.3 设备上运行我的应用时,会发生以下情况:
场景 1: 从桌面启动应用 ==> 应用以芬兰语显示,没问题
场景 2: 登录我的应用程序,==> 然后关闭应用程序 ==> 然后从桌面再次启动应用程序 ==> 应用程序显示 英文!!为什么???
(日志消息Log.v("*Locale is*", newConfig.locale.toString()); 总是显示“fi”!)
我验证了在场景 2 中,应用从桌面再次启动时始终显示系统默认区域设置。为什么?
我不知道为什么在我的场景 2 中,我的应用程序在系统语言环境中显示为英语....任何人都可以帮忙?
【问题讨论】:
标签: android android-layout android-intent android-emulator android-fragments