Принудительная «локаль» в приложении - PullRequest
1 голос
/ 15 января 2011

Я хочу повернуть телефон и сохранить язык. У меня есть папки, значения, значения - en и значения - ч . В каждой деятельности у меня есть

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());
    }

Это работает, пока я не поверну свой телефон - приложение все еще работает, кнопки и все в порядке - но язык становится странным - иногда это мой язык (час), иногда это (en) ...

Что еще мне нужно добавить?

1 Ответ

1 голос
/ 15 января 2011

Я просто удалил "если", и теперь все работает.Да, каждый раз «громоздко» немного «громоздить» локали, но я не могу найти другой путь.

Мое решение немного отличается, я просто «перебираю» егона onCreate и onConfigChange - не каждые 100 мс или около того, а на Desire (2.2) он работает безупречно.

@ Austyn

Да, это почти тот же вопрос, но яхотя есть и другое решение, кроме «форсирования 100 мс».

@ Mayra

Пользователи хотят иметь свой родной язык (HR), но он не поддерживается в (текущих) мобильных телефонах, так что это единственный способ - заставить его = /

...