Android 仅当两个开关按钮被单独检查/激活时才进行操作
我有两个开关按钮,可以触发一些动作。如果我激活A,动作A发生,如果我激活B,动作B发生,但是如果我同时激活A和B,什么也不会发生。这是我的密码:Android 仅当两个开关按钮被单独检查/激活时才进行操作,android,button,uiswitch,ischecked,Android,Button,Uiswitch,Ischecked,我有两个开关按钮,可以触发一些动作。如果我激活A,动作A发生,如果我激活B,动作B发生,但是如果我同时激活A和B,什么也不会发生。这是我的密码: switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isCh
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,例如,如果选中了“全部”,则切换?据我所研究,setOnCheckedChangeListener不支持类似于switch0&&switch1的任何东西。setOnCheckedChangeListener。。。。那我该怎么做呢
提前谢谢你,愿你的路把你引向温暖的沙滩
=================================================编辑-解决方案============================
撒谎者的解决方案贝娄工作几乎完美无瑕,但我有一些错误,分别当激活两个开关和试图停用其中一个时,输出有点错误。更好地解释:
激活开关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();
}
}
});
也许这不是最专业的解决方案,但它工作得很好,而且没有bug。谢谢你对我的帮助!愿您的道路将您引向温暖的沙滩您可以检查另一种开关状态,如下所示:
switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked && switch0.isChecked()) {
// Do something
}
else {
normal_main_list();
}
}
});
switch0.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked && switch1.isChecked()) {
// Do something
else {
normal_main_list();
}
}
});
更改此项:
switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
toggled_if_debug_activated();...
checker1 = true;
}
else {
if(checker1 && checker2){
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 {
if(checker1 && checker2){
normal_main_list();
}
}
}
});
您可以这样做:
switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
toggled_if_debug_activated();
checker1 = true;
}
else {
checker1 = false;
normal_main_list();
}
if (checker1 && checker2) {
// your code here
}
}
});
switch0.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
toggled_if_image_mode_activated();
checker2 = true;
}
else {
checker2 = false
normal_main_list();
}
if (checker1 && checker2) {
// your code here
}
}
});
如果选中了开关1&&switch0.isChecked{//两个开关都选中了},则在开关1的ChangeListener中放入条件;如果选中了开关1.isChecked{//两个开关都选中了},则在开关0中放入条件。谢谢,这是最简单的解决方案。你太棒了!