Android 强迫;地点“;应用中

Android 强迫;地点“;应用中,android,locale,Android,Locale,我想旋转我的手机并保持区域设置。我有文件夹值、值en和值hr。在我的每一项活动中 android:configChanges="keyboardHidden|orientation|locale" 在我所有的activity.java文件中 private Locale locale = null; @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfiguration

我想旋转我的手机并保持区域设置。我有文件夹值、值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());
    }
}
再创造

    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)

我还需要添加什么?

我只是删除了“如果”,现在一切正常。是的,每次“重新强制”一个区域设置都有点“笨重”,但我找不到其他方法

我的解决方案有点不同,我只是在onCreate和onConfigChange上“重新强制”它-不是每100毫秒左右,而是在Desire(2.2)上,它工作得完美无缺

@奥斯汀

是的,这几乎是同一个问题,但我认为除了“100毫秒强制”之外还有其他解决方案

@玛拉

用户希望使用他们的母语(HR),但(当前)手机不支持它,所以这是唯一的方法-强制使用它=/

我只是删除了“如果”,现在一切都正常了。是的,每次“重新强制”一个区域设置都有点“笨重”,但我找不到其他方法

我的解决方案有点不同,我只是在onCreate和onConfigChange上“重新强制”它-不是每100毫秒左右,而是在Desire(2.2)上,它工作得完美无缺

@奥斯汀

是的,这几乎是同一个问题,但我认为除了“100毫秒强制”之外还有其他解决方案

@玛拉


用户希望使用自己的母语(HR),但(当前)手机不支持这种语言,所以这是唯一的方法-强制使用=/

为什么你要干扰语言环境,而不是让android系统为你处理它?我相信这可能是一个重复的问题:,如果我错了,请纠正我。请查看我的解决方案:。它非常简单,不需要对您的活动进行任何更改。您是否忘记重置contentView,例如setContentView(R.layout.mylayout)?为什么您要搞乱区域设置,而不是让android系统为您处理它?我相信这可能是一个重复的问题:,如果我错了,请纠正我。请查看我的解决方案:。它非常简单,不需要对您的活动进行任何更改。您是否忘记重置contentView,例如setContentView(R.layout.mylayout)?