9

「sub_changelang」ボタンをクリックすると、たとえばプログラム言語がフランス語に変更されます。ロケールを変更する次のコードを取得しましたが、アプリを更新/更新して言語をフランス語に変更する方法がわかりません。

Button cl = (Button) findViewById(R.id.sub_changelang); 
cl.setOnClickListener(new OnClickListener()
{ 
    @Override 
    public void onClick(View v)
    { 
        Locale locale = new Locale("fr_FR"); 
        Locale.setDefault(locale); 
        Configuration config = new Configuration(); 
        config.locale = locale; 
    } 
});

うまくいきません。どうすれば修正できますか?追加しようとしました:

MainActivity.this.getResources().updateConfiguration(config, MainActivity.this.getResources().getDisplayMetrics());

しかし、うまくいきませんでした。私も試しました:

getBaseContext().getResources().updateConfiguration(config,
                          getBaseContext().getResources().getDisplayMetrics());

それもうまくいきませんでした。

android:configChanges="locale"

application -> activityの下のAndroidMainfest.xml内に設定されています

4

2 に答える 2

16

このコードを使用してロケールを設定しています

String languageToLoad  = "fr_FR";
     Locale locale = new Locale(languageToLoad); 
     Locale.setDefault(locale);
     Configuration config = new Configuration();
     config.locale = locale;
     context.getResources().updateConfiguration(config,context.getResources().getDisplayMetrics());

Intent intent = new Intent(XYZ.this, XYZ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

ここでのコンテキストは、アプリケーションのベース コンテキストです。 「fr_FR」の代わりに「fr」も試してください。私はアラビア語のロケールで作業しており、正常に動作しているためです。

ロケールを変更した後、アクティビティを再起動する必要があります。

于 2013-04-12T12:34:16.717 に答える
7

activity.this.recreate() を使用できます。ただし、API レベル 11 からサポートされます。

于 2013-04-12T11:52:26.450 に答える