Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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
Java 用户输入后切换设置CheckedChangeListener循环_Java_Android - Fatal编程技术网

Java 用户输入后切换设置CheckedChangeListener循环

Java 用户输入后切换设置CheckedChangeListener循环,java,android,Java,Android,我试图使用片段中的开关立即切换到暗模式(无需重新加载) 我用来做这件事的代码是 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE\u NIGHT\u YES) 这是工作在测试中,但我希望它改变到黑暗模式使用开关,所以我的代码如下 switch_us_dark_mode.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

我试图使用片段中的开关立即切换到暗模式(无需重新加载)

我用来做这件事的代码是

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE\u NIGHT\u YES)

这是工作在测试中,但我希望它改变到黑暗模式使用开关,所以我的代码如下

switch_us_dark_mode.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    // The toggle is enabled
                    Log.i("tag", "Hit Dark");
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                    editor.putString("theme", "dark");
                }

                if(!isChecked){
                    // The toggle is disable
                    Log.i("tag", "Hit Light");
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                    editor.putString("theme", "light");
                }
            }
        });
然而,在我第一次点击开关后,这是一个循环。

我试着在一个线程上运行它,但它给了我一个错误,说它必须在主线程上运行

我会把开关移到按钮下面,这样它看起来不像是表单的一部分,但那不是重点

提前谢谢

使用以下代码:

switch_us_dark_mode.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (buttonView.isPressed()) {
                    // The toggle is enabled
                    Log.i("tag", "Hit Dark");
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                    editor.putString("theme", "dark");
                } else {
                    // The toggle is disable
                    Log.i("tag", "Hit Light");
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                    editor.putString("theme", "light");
                }
            }
        });
使用“buttonView.isPressed()”而不是Ischeck。希望它能起作用


您也可以使用复选框而不是开关,并将可绘图设置为该复选框,但前提是上述操作失败。

好消息。它不再循环了。然而,它是记录“击中黑暗”但也“击中光明”的权利之后。当我使用复选框时也是这样。我会用谷歌搜索这个。可能已经为我打开了一扇门。谢谢,我还不能!抱歉,哈哈波特提到它实际上也没有切换到黑暗模式。不确切知道AppCompatDelegate.setDefaultNightMode是什么(AppCompatDelegate.MODE\u NIGHT\u YES);做