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”,因为我正在为阿拉伯语语言环境工作并且它工作正常。

更改语言环境后,您需要重新启动 Activity。

于 2013-04-12T12:34:16.717 回答
7

您可以使用 activity.this.recreate()。但它将支持 API 级别 11。

于 2013-04-12T11:52:26.450 回答