Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改OnConfiguration后,单击“禁用”按钮_Android - Fatal编程技术网

Android 更改OnConfiguration后,单击“禁用”按钮

Android 更改OnConfiguration后,单击“禁用”按钮,android,Android,我想在不重新启动活动的情况下动态更改语言。我使用OnConfiguration Changed,但在OnConfiguration Change之后。每更改一次textview都可以正常工作,但allclicklistener会将其设置为null @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.la

我想在不重新启动活动的情况下动态更改语言。我使用OnConfiguration Changed,但在OnConfiguration Change之后。每更改一次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);

}
如何解决此问题。

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


如果仍然希望在不重新启动活动的情况下实现语言更改,则必须在OnConfiguration Changed中再次为所有视图设置文本。您可以选中此项来执行此操作。或者,您可以在setContentView

在onConfigurationChanged内不调用setContentView之后再次设置onClickListeners。它将覆盖附加到“活动”的上一个视图。然后不会发生任何更改。相同的语言这就是默认情况下重新启动活动的原因。与其模仿这种行为,不如直接使用它。在onConfigurationChanged中的setcontentview更改后,再次单击“设置侦听器”。但让活动重新开始总是更好的。