我正在执行一个复选框活动,它会保存复选框状态,并有一个按钮来重置所有复选框。
我坚持如何取消选中所有选中的复选框。 我找到了关于如何做的代码,但是当我点击按钮时没有任何反应。我试图先做一个复选框,但没有成功。我做错了什么?
我尝试做的未经检查的代码低于所有代码。
这是我的代码:
public class PreDiveBK extends Activity implements CompoundButton.OnCheckedChangeListener {
Button btn;
CheckBox cb1, cb2, cb3, cb4, cb5, cb6, cb7, cb8, cb9, cb10, cb11, cb12, cb13,
cb14, cb15, cb16, cb17, cb18, cb19, cb20, cb21, cb22, cb23, cb24;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.predbk);
cb1 = (CheckBox) findViewById(R.id.cb1);
cb1.setChecked(getFromSP("cb1"));
cb1.setOnCheckedChangeListener(this);
cb2 = (CheckBox) findViewById(R.id.cb2);
cb2.setChecked(getFromSP("cb2"));
cb2.setOnCheckedChangeListener(this);
cb3 = (CheckBox) findViewById(R.id.cb3);
cb3.setChecked(getFromSP("cb3"));
cb3.setOnCheckedChangeListener(this);
cb4 = (CheckBox) findViewById(R.id.cb4);
cb4.setChecked(getFromSP("cb4"));
cb4.setOnCheckedChangeListener(this);
cb5 = (CheckBox) findViewById(R.id.cb5);
cb5.setChecked(getFromSP("cb5"));
cb5.setOnCheckedChangeListener(this);
cb6 = (CheckBox) findViewById(R.id.cb6);
cb6.setChecked(getFromSP("cb6"));
cb6.setOnCheckedChangeListener(this);
cb7 = (CheckBox) findViewById(R.id.cb7);
cb7.setChecked(getFromSP("cb7"));
cb7.setOnCheckedChangeListener(this);
cb8 = (CheckBox) findViewById(R.id.cb8);
cb8.setChecked(getFromSP("cb8"));
cb8.setOnCheckedChangeListener(this);
cb9 = (CheckBox) findViewById(R.id.cb9);
cb9.setChecked(getFromSP("cb9"));
cb9.setOnCheckedChangeListener(this);
cb10 = (CheckBox) findViewById(R.id.cb10);
cb10.setChecked(getFromSP("cb10"));
cb10.setOnCheckedChangeListener(this);
cb11 = (CheckBox) findViewById(R.id.cb11);
cb11.setChecked(getFromSP("cb11"));
cb11.setOnCheckedChangeListener(this);
cb12 = (CheckBox) findViewById(R.id.cb12);
cb12.setChecked(getFromSP("cb12"));
cb12.setOnCheckedChangeListener(this);
cb13 = (CheckBox) findViewById(R.id.cb13);
cb13.setChecked(getFromSP("cb13"));
cb13.setOnCheckedChangeListener(this);
cb14 = (CheckBox) findViewById(R.id.cb14);
cb14.setChecked(getFromSP("cb14"));
cb14.setOnCheckedChangeListener(this);
cb15 = (CheckBox) findViewById(R.id.cb15);
cb15.setChecked(getFromSP("cb15"));
cb15.setOnCheckedChangeListener(this);
cb16 = (CheckBox) findViewById(R.id.cb16);
cb16.setChecked(getFromSP("cb16"));
cb16.setOnCheckedChangeListener(this);
cb17 = (CheckBox) findViewById(R.id.cb17);
cb17.setChecked(getFromSP("cb17"));
cb17.setOnCheckedChangeListener(this);
cb18 = (CheckBox) findViewById(R.id.cb18);
cb18.setChecked(getFromSP("cb18"));
cb18.setOnCheckedChangeListener(this);
cb19 = (CheckBox) findViewById(R.id.cb19);
cb19.setChecked(getFromSP("cb19"));
cb19.setOnCheckedChangeListener(this);
cb20 = (CheckBox) findViewById(R.id.cb20);
cb20.setChecked(getFromSP("cb20"));
cb20.setOnCheckedChangeListener(this);
cb21 = (CheckBox) findViewById(R.id.cb21);
cb21.setChecked(getFromSP("cb21"));
cb21.setOnCheckedChangeListener(this);
cb22 = (CheckBox) findViewById(R.id.cb22);
cb22.setChecked(getFromSP("cb22"));
cb22.setOnCheckedChangeListener(this);
cb23 = (CheckBox) findViewById(R.id.cb23);
cb23.setChecked(getFromSP("cb23"));
cb23.setOnCheckedChangeListener(this);
cb24 = (CheckBox) findViewById(R.id.cb24);
cb24.setChecked(getFromSP("cb24"));
cb24.setOnCheckedChangeListener(this);
}
private boolean getFromSP(String key) {
SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
return preferences.getBoolean(key, false);
}
private void saveInSp(String key, boolean value) {
SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(key, value);
editor.apply();
}
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
switch (buttonView.getId()) {
case R.id.cb1:
saveInSp("cb1", isChecked);
break;
case R.id.cb2:
saveInSp("cb2", isChecked);
break;
case R.id.cb3:
saveInSp("cb3", isChecked);
break;
case R.id.cb4:
saveInSp("cb4", isChecked);
break;
case R.id.cb5:
saveInSp("cb5", isChecked);
break;
case R.id.cb6:
saveInSp("cb6", isChecked);
break;
case R.id.cb7:
saveInSp("cb7", isChecked);
break;
case R.id.cb8:
saveInSp("cb8", isChecked);
break;
case R.id.cb9:
saveInSp("cb9", isChecked);
break;
case R.id.cb10:
saveInSp("cb10", isChecked);
break;
case R.id.cb11:
saveInSp("cb11", isChecked);
break;
case R.id.cb12:
saveInSp("cb12", isChecked);
break;
case R.id.cb13:
saveInSp("cb13", isChecked);
break;
case R.id.cb14:
saveInSp("cb14", isChecked);
break;
case R.id.cb15:
saveInSp("cb15", isChecked);
break;
case R.id.cb16:
saveInSp("cb16", isChecked);
break;
case R.id.cb17:
saveInSp("cb17", isChecked);
break;
case R.id.cb18:
saveInSp("cb18", isChecked);
break;
case R.id.cb19:
saveInSp("cb19", isChecked);
break;
case R.id.cb20:
saveInSp("cb20", isChecked);
break;
case R.id.cb21:
saveInSp("cb21", isChecked);
break;
case R.id.cb22:
saveInSp("cb22", isChecked);
break;
case R.id.cb23:
saveInSp("cb23", isChecked);
break;
case R.id.cb24:
saveInSp("cb24", isChecked);
break;
}
}
public void onClick(View v) {
cb1 = (CheckBox) findViewById(R.id.cb1);
btn = (Button) findViewById(R.id.predbkReset);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (cb1.isChecked()) {
cb1.setChecked(false);
}
}
});
}
}
答案 0 :(得分:0)
将这些行移至 onCreate 方法
的末尾 btn = (Button) findViewById(R.id.predbkReset);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (cb1.isChecked()) {
cb1.setChecked(false);
}
}
});
您的 onClick 方法没有意义,因为您没有设置任何onClick侦听器
答案 1 :(得分:0)
您在方法Button R.id.predbkReset
中向public void onClick(View v)
注册了一个侦听器,但您没有调用此方法。因此,一旦您点击按钮,您的聆听者就永远不会被注册,您将无法得到通知。
尝试重构您的代码:
将方法public void onClick(View v)
重命名为例如public void initResetButton()
public void initResetButton() {
cb1 = (CheckBox) findViewById(R.id.cb1);
btn = (Button) findViewById(R.id.predbkReset);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (cb1.isChecked()) {
cb1.setChecked(false);
}
}
});
}
在onCreate
- 方法中调用新的initResetButton
- 方法:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.predbk);
initResetButton();
// Your other stuff
}