我有两个触发一些动作的开关按钮。如果我激活 A,动作 A 发生,如果我激活 B,动作 B 发生,但如果我同时激活 A 和 B,则不会发生任何事情。这是我的代码:
switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
toggled_if_debug_activated();
checker1 = true;
}
else {
normal_main_list();
}
}
});
switch0.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
toggled_if_image_mode_activated();
checker2 = true;
}
else {
normal_main_list();
}
}
});
我尝试了很多东西,但没有任何效果。如何添加仅在两个开关都打开时触发的操作 C(例如 toggled_if_all_checked)?据我研究.setOnCheckedChangeListener不支持(switch0 && switch1).setOnCheckedChangeListener(...) 之类的东西。那么我该怎么做呢?
提前感谢您,愿您的道路带您前往温暖的沙滩!
================================= 编辑 - 解决方案 =============== ==============
Liar的解决方案几乎完美无瑕,但我有一些错误,分别在激活两个开关并试图只停用其中一个时,输出有点错误。更好的解释:
您激活开关 A => 输出 A;您激活开关 B => 输出 B;您激活开关 A && B => 输出 C;您停用 A 或 B 并且程序显示输出 B 或 A(基本上颠倒工作)
这是我想出的代码:
switch0.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked && switch1.isChecked())
{
toggle_C();
}
else
if(isChecked && !switch1.isChecked())
{
toggle_A();
}
else
if (!isChecked && switch1.isChecked())
{
toggle_B();
}
else {
toggle_DEFAULT();
}
}
});
switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked && switch0.isChecked())
{
toggle_C();
}
else
if(isChecked && !switch0.isChecked())
{
toggle_B();
}
else
if (!isChecked && switch0.isChecked())
{
toggle_A();
}
else {
toggle_DEFAULT();
}
}
});
也许它不是最专业的解决方案,但它工作正常并且没有错误。谢谢所有帮助过我的人!愿你的道路带你到温暖的沙滩