点击一个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:引用自定义xml中的资源
  • Android:如何将Spannable.setSpan和String.format结合起来?
  • 我怎样才能检测到我的应用程序Androidselect哪个布局?
  • 以编程方式将应用程序语言环境设置为pt_BR
  • Android有* native *支持SVG图像作为drawable资源(图标)?
  • 由于“获取资源编号的值时没有包标识符”而导致崩溃
  • Android资源ID
  • 从资源加载语言特定的string?
  • 我正在使用此代码来设置区域设置

     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。