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);做