0

2 つの言語を使用できるアプリを作成しています。ユーザーはボタンをクリックして言語を変更しています。これが私の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);
}

これは正常に機能しますが、ユーザーがアプリケーションを完全に終了して再度開くと、デフォルト (英語) に戻ります。ユーザーが選択した言語設定をアプリに記憶させるにはどうすればよいですか? 答えが共有プリファレンスである場合、その方法は? これまでのところ、文字列とブール値を保存するために共有設定のみを使用してきましたが、このようなものにどのようにアプローチするかわかりません。

4

1 に答える 1

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);
于 2013-09-01T22:10:43.297 に答える