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

Я меняю настройки 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".


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


Ответы (1)


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

setContentView(R.Layout.MainLayout);
person Guy    schedule 03.09.2013