点击一个button来切换语言

当我点击“sub_changelang”button时,应该将程序语言改为法语。 我得到了下面的代码来改变语言环境,但我不知道如何刷新/更新应用程序来将语言更改为法语。

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中设置

  • Android应用程序的背景图像
  • JPG真的只能用于Android?
  • 如何从string而不是R.id查找
  • Android:在string,SpannedStrings和Spannablestrings之间转换
  • 找不到与给定名称匹配的资源
  • 获取资源编号的值时没有已知的包
  • Gradle Robolectric资源NotFoundException在testing中
  • Android布局错误:“资源ID <res_id>不是STYLEtypes(而是attr)”
  • 我正在使用此代码来设置区域设置

     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.this.recreate(),但它将支持API级别11。