在onconfigurationchanged上调用按钮后单击禁用

时间:2018-05-21 08:04:05

标签: android

我想在没有重启活动的情况下动态更改语言。我使用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);

}

我该如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

这是因为您在setContentView中调用了onConfigurationChanged,它将覆盖附加到活动的上一个视图,从而导致onClickListeners丢失。我建议你recreate这个更干净的活动。

如果您仍希望在不重新启动活动的情况下实现语言更改,则必须在setText中再次onConfigurationChanged查看所有观看次数。您可以查看此SO来执行此操作。或者,您可以在onClickListeners

之后再次设置setContentView