Android 更改OnConfiguration后,单击“禁用”按钮
我想在不重新启动活动的情况下动态更改语言。我使用OnConfiguration Changed,但在OnConfiguration Change之后。每更改一次textview都可以正常工作,但allclicklistener会将其设置为nullAndroid 更改OnConfiguration后,单击“禁用”按钮,android,Android,我想在不重新启动活动的情况下动态更改语言。我使用OnConfiguration Changed,但在OnConfiguration Change之后。每更改一次textview都可以正常工作,但allclicklistener会将其设置为null @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.la
@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);
}
如何解决此问题。这是因为您在onConfigurationChanged中调用了setContentView,这将覆盖附加到Activity的上一个视图,导致onClickListeners丢失。我建议你重新创建一个更干净的活动
如果仍然希望在不重新启动活动的情况下实现语言更改,则必须在OnConfiguration Changed中再次为所有视图设置文本。您可以选中此项来执行此操作。或者,您可以在setContentView在onConfigurationChanged内不调用setContentView之后再次设置onClickListeners。它将覆盖附加到“活动”的上一个视图。然后不会发生任何更改。相同的语言这就是默认情况下重新启动活动的原因。与其模仿这种行为,不如直接使用它。在onConfigurationChanged中的setcontentview更改后,再次单击“设置侦听器”。但让活动重新开始总是更好的。