4

重複の可能性:
Androidでプログラムによってアプリの言語を変更する

SettingsActivity.javaすべてのアクティビティの言語をすぐに変更したいと思います。
また、システムロケールに関係なく、この選択を保存します(アプリを終了したり、電話を再起動したりする場合でも)。
どうやってやるの?

public class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) { 
        switch (pos) {
        case 0:
            Locale locale = new Locale("en");
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
            getBaseContext().getResources().updateConfiguration(config, getBaseContext()
                    .getResources().getDisplayMetrics());
            break;

        case 1: 
            Locale locale2 = new Locale("de");
            Locale.setDefault(locale2);
            Configuration config2 = new Configuration();
            config2.locale = locale2;
            getBaseContext().getResources().updateConfiguration(config2, getBaseContext()
                    .getResources().getDisplayMetrics()); 
            break;          
        }       
    }

    public void onNothingSelected(AdapterView<?> parent) {
      // Do nothing.
    }
}
4

1 に答える 1

2

1) アプリの終了と再起動の間に、次のように選択を保存できます: アプリケーション クラスの作成

public class MutawaApplication extends Application {

(http://developer.android.com/reference/android/app/Application.html) AndroidManifest.xmlに登録

android:name=".MyApplication"

onCreate のこのクラスでは、SharedPreferences から言語を読み取ります。アプリで言語を変更するときに、SharedPreferences に保存します。

2) アクティビティで onResume のロケールを確認し、必要に応じて makereplaceContentView()

于 2012-09-25T14:48:06.740 に答える