Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Чтение настроек локали из общих настроек не работает для MainActivity

Автор вопроса: GuyОтветов: 1

Я меняю настройки Locale внутри своего приложения с помощью этого метода:

public void setLanguageSettings(String localeLang){
    Locale locale = new Locale(localeLang);
    saveString("lang", localeLang);
    Locale.setDefault(locale);
    Configuration configSlo = new Configuration();
    configSlo.locale = locale;
    getBaseContext().getResources().updateConfiguration(configSlo, getBaseContext().getResources().getDisplayMetrics());
}

Как видите, переменная localeLang String затем сохраняется в SharedPreferences. Эта переменная в моем случае либо "sl", либо "en" (по умолчанию "en").

Затем я вызываю этот (тот же) метод каждый раз при запуске приложения (каждый раз при открытии MainActivity):

String language = getString("lang");
setLanguageSettings(language);

Locale успешно изменен (я проверил по журналу), но проблема в том, что изменение не видно в MainActivity. Если я открою любое другое действие, язык будет правильным, но MainActivity останется "en", даже если он должен быть "sl". Мне пришлось бы перезапустить MainActivity, чтобы он стал "sl".

  • вы должны проверить, что он при запуске приложения и в вашей деятельности вызывал его в методе onResume() ....... Piyush 02.09.2013
  • Я добавил onResume и этот код, но он все равно не работает. Guy 02.09.2013
  • Но после изменения языка вы должны проверить локальный из общих предпочтений, что если это sl, то вернуть true, в противном случае false означает, что возвращается английский язык. Piyush 02.09.2013
  • Не могли бы вы показать мне код, например? Я не совсем уверен, что ты пытаешься сказать Guy 02.09.2013

androidsharedpreferencesjava

Ответы

Ответ 1 · рейтинг 1 · Guy

Я решил этот вопрос странным образом. Я только что снова вызвал setContentView в методе смены языка:

setContentView(R.Layout.MainLayout);

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы