java开关setOnCheckedChangeListener在用户输入后循环
我试图使用片段中的开关立即切换到暗模式(无需重新加载)
我用来做这件事的代码是
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_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");
}
}
});
我试着在一个线程上运行它,但它给了我一个错误,说它必须在主线程上运行
我会把开关移到按钮下面,这样它看起来不像是表单的一部分,但那不是重点
提前谢谢
# 1 楼答案
使用以下代码:
使用“buttonView.isPressed()”而不是isChecked。希望能奏效
您也可以使用复选框而不是开关,并将drawable设置为该复选框,但前提是上述操作失败