单击按钮切换语言

时间:2013-04-12 11:33:12

标签: android localization resources

当我点击“sub_changelang”按钮时,它应该将程序语言更改为法语。我得到以下代码来更改区域设置,但我不知道如何刷新/ pdate应用程序将语言更改为法语。

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"

在应用程序中的AndroidMainfest.xml内设置 - >活性

2 个答案:

答案 0 :(得分: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”,因为我正在为阿拉伯语区域设置工作并且工作正常。

您需要在更改区域设置后重新启动活动。

答案 1 :(得分:6)

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