我想在没有重启活动的情况下动态更改语言。我使用onConfigurationChanged但是在onconfigurationchange之后。它可以很好地改变每个textview,但allclicklistener使null。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alias);
switchLang.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// ...
Configuration newConfig = new Configuration();
newConfig.locale = new Locale("en".toLowerCase());
onConfigurationChanged(newConfig);
} else {
// ...
Configuration newConfig = new Configuration();
newConfig.locale = new Locale("tr".toLowerCase());
onConfigurationChanged(newConfig);
}
}
});
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
setContentView(R.layout.activity_alias);
}
我该如何解决这个问题。
答案 0 :(得分:1)
这是因为您在setContentView
中调用了onConfigurationChanged
,它将覆盖附加到活动的上一个视图,从而导致onClickListeners
丢失。我建议你recreate
这个更干净的活动。
如果您仍希望在不重新启动活动的情况下实现语言更改,则必须在setText
中再次onConfigurationChanged
查看所有观看次数。您可以查看此SO来执行此操作。或者,您可以在onClickListeners
setContentView