我想旋转手机并保留区域设置。我有文件夹值,值 - en 和值 - hr 。在我的每项活动中
android:configChanges="keyboardHidden|orientation|locale"
并且在每个 activity.java 文件中
private Locale locale = null;
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (locale != null)
{
newConfig.locale = locale;
Locale.setDefault(locale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
和onCreate
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Configuration config = getBaseContext().getResources().getConfiguration();
String lang = settings.getString("language","en");
if (! "".equals(lang) && ! config.locale.getLanguage().equals(lang))
{
locale = new Locale(lang);
Locale.setDefault(locale);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
直到我旋转手机才能工作 - 应用程序仍在工作,按钮和一切都很好 - 但是语言环境变得很奇怪 - 有时这是我的语言环境(hr)有时它(en)......
我还需要添加什么?
答案 0 :(得分:1)
我只是删除了“if's”,现在一切正常。是的,每次“重新强制”一个地方都有点“笨重”,但我找不到另一种方式。
我的解决方案有点不同,我只是在onCreate和onConfigChange上“重新强制”它 - 不是每100毫秒左右,而是在Desire(2.2)它完美无缺地工作。
@Austyn
是的,这几乎是同一个问题,但除了“100ms强迫”之外我还有其他解决方案。
@Mayra
用户想拥有他们的母语(HR),但在(当前)手机中不支持所以这是唯一的方法 - 强迫它= /