首先,在佈局文件中註冊CheckBox
activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/eatID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="喫飯"
/>
<CheckBox
android:id="@+id/sleepID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="睡覺"/>
<CheckBox
android:id="@+id/dotaID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="dota"/>
</LinearLayout>
MainActivity.java
CheckBox 即可以綁定 view.OnClickListener,也可以綁定 CompoundButton.OnCheckedChangeListener.
package com.example.litingdong.checkboxtest;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
public class MainActivity extends ActionBarActivity {
private CheckBox eatBox;
private CheckBox sleepBox;
private CheckBox dotaBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
eatBox=(CheckBox)findViewById(R.id.eatID);
sleepBox=(CheckBox)findViewById(R.id.sleepID);
dotaBox=(CheckBox)findViewById(R.id.dotaID);
//OnClickListener
OnButtonClickListener listener=new OnButtonClickListener();
listener = new OnButtonClickListener();
eatBox.setOnClickListener(listener);
sleepBox.setOnClickListener(listener);
dotaBox.setOnClickListener(listener);
//OnCheckedChangedListener
CheckBoxListener changeListener =new CheckBoxListener();
eatBox.setOnCheckedChangeListener(changeListener);
sleepBox.setOnCheckedChangeListener(changeListener);
dotaBox.setOnCheckedChangeListener(changeListener);
}
class OnButtonClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
CheckBox box=(CheckBox)v;
if (box.getId()==R.id.eatID) {
System.out.println("eatBox");
}else if(box.getId()==R.id.sleepID){
System.out.println("sleepBox");
}else{
System.out.println("dotaBox");
}
if (box.isChecked()){
System.out.println("Checked!");
}else{
System.out.println("UnChecked!");
}
}
}
class CheckBoxListener implements CompoundButton.OnCheckedChangeListener{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView.getId()==R.id.eatID){
System.out.println("eatBox");
}else if (buttonView.getId()==R.id.sleepID){
System.out.println("sleepBox");
}else{
System.out.println("dotaBox");
}
if (isChecked){
System.out.println("Checked!");
}else{
System.out.println("UnChecked!");
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
logcat: