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,?"你選擇了發(fā)呆選項"+b,?Toast.LENGTH_SHORT).show();
????????}
????}
}3個checkbox,添加了checkedchang事件。我發(fā)現(xiàn),case里面,沒有添加break的情況下第一個read被點擊了,會依次彈出 “你選擇了讀書選項true“+”你選擇了運動選項true”+“你選擇了發(fā)呆選true”而點第二個sport,則會彈出”你選擇了運動選項true”+“你選擇了發(fā)呆選true”點最后一個think則只彈出一個“你選擇了發(fā)呆選true”相當(dāng)于,點擊前面的按鈕,則后面全都會彈出來出來,這是為什么?
1 回答
已采納

望遠(yuǎn)
TA貢獻(xiàn)1017條經(jīng)驗 獲得超1032個贊
這不是JAVA基礎(chǔ)的知識嗎?
switch多分支語句的貫穿現(xiàn)象。
具體表現(xiàn)為:一旦switch語句的case匹配成功,則進(jìn)入執(zhí)行,直到遇到break跳出,或者是執(zhí)行完整個switch語句,不管后方的case是否匹配成功。
所以當(dāng)有default分支的時候,我們一般把default分支放到最后處理不匹配所有case的情況。
添加回答
舉報
0/150
提交
取消