安卓checkedbox 的疑问

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”

相当于,点击前面的按钮,则后面全都会弹出来出来,这是为什么?

慕粉4241372
浏览 1415回答 1
1回答

望远

这不是JAVA基础的知识吗?switch多分支语句的贯穿现象。具体表现为:一旦switch语句的case匹配成功,则进入执行,直到遇到break跳出,或者是执行完整个switch语句,不管后方的case是否匹配成功。所以当有default分支的时候,我们一般把default分支放到最后处理不匹配所有case的情况。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java