一下是我在android4.4上运行的一个包含多选框和全选框的小程序:代码不是很精简,但是却是本人第一次写android程序!
有个小问题:当全选完成时,任意点击一个不是全选的框,系统会全部变为unchecked,不知道问题在哪,有闲着无事的大虾,谢谢帮我看看问题在哪?
import com.example.e1_10.R;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
public class MainActivity extends Activity {
private CheckBox eatBox, sleepBox, playBox, allBox;
private TextView text;
String e = "";
String s = "";
String p = "";
@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);
playBox = (CheckBox) findViewById(R.id.playId);
allBox = (CheckBox) findViewById(R.id.all);
text = (TextView) findViewById(R.id.textview);
text.setBackgroundColor(Color.GRAY);
onBoxChangeListener listener = new onBoxChangeListener();
eatBox.setOnCheckedChangeListener(listener);
sleepBox.setOnCheckedChangeListener(listener);
playBox.setOnCheckedChangeListener(listener);
allBox.setOnCheckedChangeListener(listener);
}
// OncheckChangeListener的使用方法:
class onBoxChangeListener implements OnCheckedChangeListener {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
if (arg0.getId() == R.id.all) {
if (arg1) {
eatBox.setChecked(true);
sleepBox.setChecked(true);
playBox.setChecked(true);
e = "eat";
s = "sleep";
p = "play";
} else {
eatBox.setChecked(false);
sleepBox.setChecked(false);
playBox.setChecked(false);
text.setText("");
}
} else {
if (arg0.getId() == R.id.eatId) {
if (arg1)
e = "eat";
else
e = "";
}
if (arg0.getId() == R.id.sleepId) {
if (arg1)
s = "sleep";
else
s = "";
}
if (arg0.getId() == R.id.playId) {
if (arg1)
p = "play";
else
p = "";
}
}
if (e.equals("eat") && s.equals("sleep") && p.equals("play"))
allBox.setChecked(true);
if(e.equals("") || s.equals("") || p.equals(""))
allBox.setChecked(false);
if (e.equals("") && s.equals("") && p.equals("")) {
text.setText("none checked!");
allBox.setChecked(false);
} else
text.setText(e + " " + s + " " + p);
}
}
// OnClickListener的使用方法:
/*
* OnBoxListener listener = new OnBoxListener();
* eatBox.setOnClickListener(listener);
* sleepBox.setOnClickListener(listener);
* playBox.setOnClickListener(listener); }
*
* class OnBoxListener implements OnClickListener {
*
* @Override public void onClick(View view) { // TODO Auto-generated method
* stub CheckBox box = (CheckBox) view; if (box.getId() == R.id.eatId) { if
* (box.isChecked()) e = "eat"; else e=""; } if (box.getId() ==
* R.id.sleepId) { if (box.isChecked()) s = "sleep"; else s=""; } if
* (box.getId() == R.id.playId) { if (box.isChecked()) p = "play"; else
* p=""; } text.setText(e + " " + s + " " + p); }
*
* }
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
原文:http://www.cnblogs.com/fufc/p/4980120.html