изменение локали в приложении на платформе Android 2.2 (на Android 4.0 в порядке) в моем случае - PullRequest
2 голосов
/ 29 марта 2012

Я хотел бы изменить язык приложения программно. Я использую следующий код для выполнения задачи, которая находится в onCreate() методе Activity:

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);

    Resources res = context.getResources();
    DisplayMetrics dm = res.getDisplayMetrics();

    Configuration config= new Configuration();
    config.locale = new Locale("fr"); //use French locale
    res.updateConfiguration(config, dm);

    //following code will navigate among fragments
    ...
}

Мое приложение имеет только одну активность , в которой размещено несколько фрагментов .

Если я запускаю свое приложение на платформе Android 4.0 , прекрасно работает , каждый фрагмент отображается на "французском" языке.

Но если я запускаю на платформе Android 2.2 , только первый фрагмент отображается на французском языке, следующий замененный фрагмент по-прежнему показывает английский (мои настройки телефона используют английскую локаль).

Почему он работает только на платформе Android 4.0?

1 Ответ

0 голосов
/ 30 марта 2013

Это похоже на ошибку в Android 2.x

Потому что, если вы измените локаль не в onCreate(), а в createMenu() или внутри некоторого spinner.setOnItemSelectedListener(), это будет работать.Это обходной путь, но попробуйте вызвать какое-либо событие после запуска приложения и изменить в нем локаль.

...