我希望我的应用程序支持 2 种语言,en 和 it,所以我创建了一个 Switch 来更改 mainActivity 中的语言环境。 这个想法是改变语言环境并重新启动传递新语言的活动。 我使用 API 28 来支持更多设备。
我试过了,但没用。 有时更改语言环境,但只更改一次。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityContext = this.getApplicationContext();
setContentView(R.layout.activity_main);
language = findViewById(R.id.language);
String lan = getIntent().getStringExtra("lan");
if(lan != null) {
if(lan.equals("ita")) {
language.setChecked(true);
lang = "ita";
}else lang = "eng";
}else if(Locale.getDefault().toString().startsWith("it")){
language.setChecked(true);
lang = "ita";
}
buttonPlay.setOnClickListener(view -> enterRoom());
language.setOnCheckedChangeListener((compoundButton, b) -> {
lang = b? "ita" : "eng";
setLocale(lang);
});
}
private void setLocale(String lang){
Locale locale = new Locale(lang.substring(0, 2));
Locale.setDefault(locale);
Resources resources = getResources();
Configuration configuration = resources.getConfiguration();
configuration.setLocale(locale);
getApplicationContext().createConfigurationContext(configuration);
Intent i = getIntent();
i.putExtra("lan",lang);
finish();
startActivity(i);
}