Android常用控件(二)- RadioGroup、RadioButton、CheckBox、Toast 



一、 RadioGroup、RadioButton的用法 


RadioGroup是RadioButton的组。一个RadioGroup里面可以有多个RadioButton,但是只能选中其中的一个RadioButton。 



示例1:一个应用程序中有两个单选按钮,用于选择男或女。 



 



开发步骤: 


1、 新建一个Android应用程序 


2、 编写main.xml文件,添加一个RadioGroup标签(还可以设置此标签内的布局方向是水平布局还是垂直布局) 


3、 在RadioGroup标签内添加两个RadioButton 


4、 编写Activity,先声明3个全局变量,用于接收这三个控件对象 


5、 在onCreate()方法内,根据控件i d获得这三个对象并赋给相应的变量 


6、 编写监听器,监听器实现的是RadioGroup.OnCheckedChangeListener()提供的接口,需要重写里面的public void onCheckedChanged(RadioGroup group, int checkedId) 方法,这个方法的第一个参数是用来接收RadioGroup对象,第二个参数是用来接收被选中的RadioButton的ID。 


在这个方法里面可以做一系列的判断和操作,比如判断RadioButton的id是否等于checkedId,如果等于就可以输出一句话或者使用Toast显示提示消息。 


7、将监听器绑定到RadioGroup上 


需要主要的是, 


a)、这里绑定监听器的是RadioGroup对象而不是RadioButton对象 


b)、这里的监听器实现的是RadioGroup.OnCheckedChangeListener()提供的接口。 



二、 CheckBox的用法 


CheckBox复选框,相信大家都很了解了,这里就不多说了,直接上示例。 


示例2:一个应用程序中有三个复选框,可以进行多选操作。 



 



开发步骤: 


1、 新建一个Android应用程序 


2、 编写main.xml文件,添加三个CheckBox标签 


3、 编写Activity,先声明3个全局变量,用于接收这三个控件对象 


4、 为每一个CheckBox都编写一个监听器,该监听器实现的是CompoundButton.OnCheckedChangeListener()提供的接口,需要重写里面的public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)方法,这个方法的第一个参数是用来接收CompoundButton对象,第二个参数是用来接收是否被选中, 


在这个方法里面可以做一系列的判断和操作,比如判断某个CheckBox有没有被选中 


5、 将监听器绑定在对应的CheckBox上 



三、 Toast的用法 


Toast主要用于提示信息,用起来很方便,一行代码就OK了。 


1、 创建Toast对象 


makeText(Context context, CharSequence text, int duration); 


通过调用这个方法,返回一个Toast对象。 


第一个参数是上下文对象,通常是你的应用程序或者Activity对象, 


第二个参数就是要显示的文本内容,可以格式化文本 


第三个参数是持续多长时间来显示消息,有两个常量:LENGTH_SHORT 或者LENGTH_LONG 


2、 调用show()方法显示。 


Toast toast = Toast.makeText(RadioTest.this, "female", Toast.LENGTH_SHORT); 


toast.show(); 


在前面的RadioButton示例中,当选中”女”的单选框时调用Toast。


 




有一点需要注意的是: 


RadioGroup的监听器实现是RadioGroup.OnCheckedChangeListener()提供的接口,而CheckBox的监听器实现的是CompoundButton.OnCheckedChangeListener()提供的接口 


为什么RadioGroup和CheckBox实现的不是同一个接口呢? 


原因大概是因为: 


在RadioGroup.OnCheckedChangeListener()里面的onCheckedChanged(RadioGroup group, int checkedId) 方法它里面需要的是一个RadioGroup参数,而RadioGroup并不是CompoundButton的子类,所以它只能再重新写一个这样的接口。 

而CheckBox它本身就是CompoundButton的子类,所以它可以直接使用这个接口。