在布局文件中,RaidoButton需要放在RadioGroup中。代表一组中只能选中一个。
layout文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/radio_tv"
/>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<RadioButton
android:id="@+id/mailRadio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/mailRadio"
/>
<RadioButton
android:id="@+id/femailRadio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/femailRadio"
/>
</RadioGroup>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/checkbox_tv"
/>
<CheckBox
android:id="@+id/read_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/read_checkbox"
/>
<CheckBox
android:id="@+id/watchtv_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/watchtv_checkbox"
/>
<CheckBox
android:id="@+id/playgame_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/playgame_checkbox"
/>
</LinearLayout>
strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mailRadio">男</string>
<string name="femailRadio">女</string>
<string name="radio_tv">请选择性别:</string>
<string name="checkbox_tv">请选择爱好:</string>
<string name="watchtv_checkbox">看电视</string>
<string name="read_checkbox">看书</string>
<string name="playgame_checkbox">打游戏</string>
<string name="radio_checkbox_text">单选和多选按钮的使用</string>
</resources>
java:
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;
public class RadioAndCheckboxActivity extends Activity {
private RadioGroup radioGroup = null;
private RadioButton maleRadio = null;
private RadioButton femailRadio = null;
private CheckBox readCheckbox = null;
private CheckBox watchTvCheckBox = null;
private CheckBox playgameCheckBox = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.radio_checkbox);
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
maleRadio = (RadioButton) findViewById(R.id.mailRadio);
femailRadio = (RadioButton) findViewById(R.id.femailRadio);
readCheckbox = (CheckBox) findViewById(R.id.read_checkbox);
watchTvCheckBox = (CheckBox) findViewById(R.id.watchtv_checkbox);
playgameCheckBox = (CheckBox) findViewById(R.id.playgame_checkbox);
// 在RadioGroup上添加监听器
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
System.out.println(checkedId);
if (maleRadio.getId() == checkedId) {
Toast.makeText(RadioAndCheckboxActivity.this, maleRadio.getText(), Toast.LENGTH_SHORT).show();
}
else if (femailRadio.getId() == checkedId) {
Toast.makeText(RadioAndCheckboxActivity.this, femailRadio.getText(), Toast.LENGTH_SHORT).show();
}
}
});
readCheckbox.setOnCheckedChangeListener(new MyCheckboxCheckedChangeListener());
watchTvCheckBox.setOnCheckedChangeListener(new MyCheckboxCheckedChangeListener());
playgameCheckBox.setOnCheckedChangeListener(new MyCheckboxCheckedChangeListener());
System.out.println(readCheckbox.getText());
}
class MyCheckboxCheckedChangeListener implements CompoundButton.OnCheckedChangeListener {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
String msg = buttonView.getText().toString();
Log.i("RadioAndCheckboxActivity", msg + "-->checked:" + isChecked);
if (isChecked) {
Toast.makeText(RadioAndCheckboxActivity.this, msg + " Checked!", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(RadioAndCheckboxActivity.this, msg + " Not checked!", Toast.LENGTH_SHORT).show();
}
}
}
}
注意2点:
1.在RadioGroup上添加OnCheckedChangeListener,不是在RadioButton。
2.CheckBox添加的Listener是CompoundButton.OnCheckedChangeListener,Checkbox继承CompoundButton,使用的CompoundButton的OnCheckedChangeListener。
效果: