protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity);
read = (CheckBox) findViewById(R.id.read);
sport = (CheckBox) findViewById(R.id.sport);
think = (CheckBox) findViewById(R.id.think);
MyCheckBox myCheckBox = new MyCheckBox();
read.setOnCheckedChangeListener(myCheckBox);
sport.setOnCheckedChangeListener(myCheckBox);
think.setOnCheckedChangeListener(myCheckBox);
}
class MyCheckBox implements CompoundButton.OnCheckedChangeListener{
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
CheckBox checkBox = (CheckBox) compoundButton;
switch (checkBox.getId()){
case R.id.read:
Toast.makeText(MainActivity.this,"你选择了读书选项"+b,Toast.LENGTH_SHORT).show();
case R.id.sport:
Toast.makeText(MainActivity.this,"你选择了运动选项"+b,Toast.LENGTH_SHORT).show();
case R.id.think:
Toast.makeText(MainActivity.this, "你选择了发呆选项"+b, Toast.LENGTH_SHORT).show();
}
}
}3个checkbox,添加了checkedchang事件。我发现,case里面,没有添加break的情况下第一个read被点击了,会依次弹出 “你选择了读书选项true“+”你选择了运动选项true”+“你选择了发呆选true”而点第二个sport,则会弹出”你选择了运动选项true”+“你选择了发呆选true”点最后一个think则只弹出一个“你选择了发呆选true”相当于,点击前面的按钮,则后面全都会弹出来出来,这是为什么?
1 回答
已采纳
望远
TA贡献1017条经验 获得超1032个赞
这不是JAVA基础的知识吗?
switch多分支语句的贯穿现象。
具体表现为:一旦switch语句的case匹配成功,则进入执行,直到遇到break跳出,或者是执行完整个switch语句,不管后方的case是否匹配成功。
所以当有default分支的时候,我们一般把default分支放到最后处理不匹配所有case的情况。
添加回答
举报
0/150
提交
取消