我有一个简单的程序,在一个组中有3个单选按钮。当我点击任何一个单选按钮时,我会看到Toast,让用户知道他们选择了哪个按钮。
我面临的问题是,我有一个onClick
事件,用于clearCheck
无线电组的按钮。发生这种情况时,将再次显示Toast消息,其中包含单选按钮中的先前所选信息。
当我clearCheck
收音机组时,如何防止吐司发生?
public class MainActivity extends AppCompatActivity {
RadioGroup radioGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize Radio Group and attach click handler
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
radioGroup.clearCheck();
// Attach CheckedChangeListener to Radio Group
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton rb = (RadioButton) group.findViewById(checkedId);
if(null!=rb && checkedId > -1){
Toast.makeText(MainActivity.this, rb.getText(), Toast.LENGTH_SHORT).show();
}
}
});
}
public void onClear(View v){
// Clears the radio buttons when the clear button is pressed
radioGroup.clearCheck();
}
答案 0 :(得分:-1)
这是因为清除支票正在改变无线电组的已检查状态。你需要设置一个标志让听力知道它应该忽略那个变化。
只是在类中声明的一个简单布尔值,在onClear
中标记并在onCheckChanged
中签入(并重置onCheckChanged
中的标记)。