2013-09-01 2 views
0

Я создаю приложение, имеющее два доступных языка. Пользователь переключается между языками одним нажатием кнопки. Вот мои методы OnClick:Как сохранить настройки локали пользователя (в приложении)?

public void setLocaleEng(View v){ 
    Locale localeEng = new Locale("en"); 
    Locale.setDefault(localeEng); 
    Configuration configEng = new Configuration(); 
    configEng.locale = localeEng; 
    getBaseContext().getResources().updateConfiguration(configEng, getBaseContext().getResources().getDisplayMetrics()); 
    Intent intent = new Intent(NastavitveJezika.this, MainActivity.class); 
    finish(); 
    startActivity(intent); 
} 

public void setLocaleSlo(View v){ 
    Locale localeSlo = new Locale("sl"); 
    Locale.setDefault(localeSlo); 
    Configuration configSlo = new Configuration(); 
    configSlo.locale = localeSlo; 
    getBaseContext().getResources().updateConfiguration(configSlo, getBaseContext().getResources().getDisplayMetrics()); 
    Intent intent = new Intent(NastavitveJezika.this, MainActivity.class); 
    finish(); 
    startActivity(intent); 
} 

Это работает, как и должно быть, но когда пользователь полностью выходит из приложения и повторно открывает его, он будет обратно по умолчанию (английский). Как мне настроить приложение, которое пользователь выбрал? Если ответ является «Общие предпочтения», то как? Я использовал только общие предпочтения для хранения строк и логических элементов до сих пор, я не знаю, как бы я приблизился к чему-то подобному.

ответ

2

Если ответ является «Общие предпочтения», то как? Я использовал только общие настройки для хранения строк.

Да, ответ SharedPreferences и вы можете использовать его для хранения строк, как и раньше. Просто заставьте его хранить «en» или «sl», а затем

String enOrSlReadFromSharedPrefs = readSharedPrefsJustLikeYouDidBefore(); 
    Locale locale = new Locale(enOrSlReadFromSharedPrefs); 
    Locale.setDefault(locale); 
    Configuration configSlo = new Configuration(); 
    configSlo.locale = localeSlo; 
    getBaseContext().getResources().updateConfiguration(configSlo, getBaseContext().getResources().getDisplayMetrics()); 
    Intent intent = new Intent(NastavitveJezika.this, MainActivity.class); 
    finish(); 
    startActivity(intent); 
Смежные вопросы