首先说一下什么是RadioButton, 什么是RadioGroup
RadioButton(单选按钮)顾名思义就是一组RadioButton只能选中其中一个。 通常RadioButton和RadioGroup是一起使用的。
如果RadioButton和另外的一个RadioButton不再同一组的话,那么这两个RadioButton都是可以同时被选中的。
接着说一下RadioButton的事件。 因为RadioButton是继承与Button类的。所以上节说的Button的事件,RadioButton也是有的。
而RadioButton的特殊之处就是可以选中的功能,所以RadioButton的事件就是OnCheckedChange(也就是选中或者取消选中改变的事件)
RadioButton举例说明:
public class RadioButtonActivity extends Activity {
private static RadioButton radioButton1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_radiobutton);
radioButton1 =(RadioButton)findViewById(R.id.radioButton1);
radioButton1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
//Toast.makeText(RadioButtonActivity.this, ""+arg1+"选中", 0).show();
System.out.println(""+arg1+"选中");
}
});
radioButton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//Toast.makeText(RadioButtonActivity.this, "按下", 0).show();
System.out.println("按下");
}
});
}
}
布局文件就不列出, 其中就有一个RadioButton和一个Button按钮(后面会用到)
测试结果为:
1: 当我选中同时抬起后的打印:
这时候模拟器的截图为:
当我再次点击“是”的时候, OnCheckedChanged的事件就不会发生了,但是OnClick事件还是会发生的。 因为RadioButton的状态没有发生变化
RadioGroup举例说明:
radioGroup = (RadioGroup)findViewById(R.id.radiogroup);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup arg0, int arg1) {
// TODO Auto-generated method stub
RadioButton curRadioButton = (RadioButton) findViewById(arg1);
if(lastRadioButton != null)
lastRadioButton.setText("没有选中");
curRadioButton.setText("选中");
lastRadioButton = curRadioButton;
}
});
布局文件也不贴出了。 布局文件也就是一个RadioGroup里面有3个RadioButton而已;
测试结果为下:
默认情况是3个都没有选择,只有一个选中就会显示选中。同时3个之中只能有一个同时被选中。
总结:
1: RadioButton和RadioGroup一般都是组合使用。
2:RadioButton的setOnCheckedChangeListener和RadioGroup的setOnCheckedChangeListener的事件名字是一样的,但是不是同一个文件。因为他们所属的包名都不一样
import android.widget.RadioGroup.OnCheckedChangeListener; (Radiogroup的所属包)
import android.widget.CompoundButton.OnCheckedChangeListener; (RadioButton的所属包)
3: RadioButton和RadioGroup一般分2中使用情况:
<1> : 当选中时立刻生效
<2>:当选中时先不生效, 当最后有一个确定按钮点击后才生效。比较网站注册帐号等
好, 今天的就到这里。