2017-03-07 82 views
0

我正在执行一个复选框活动,它将复选框状态保存并具有用于重置所有复选框的按钮。重置Android中的所有复选框

我被困在如何取消选中所有选中的复选框。 我已经找到了关于如何做的代码,但是当我点击按钮时没有发生任何事情。我试图首先做1复选框,但没有成功。我做错什么了吗?

我试图做的未经检查的代码是低于所有的代码。

这里是我的代码:

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

将这些线将的onCreate方法结束

btn = (Button) findViewById(R.id.predbkReset); 

btn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     if (cb1.isChecked()) { 
      cb1.setChecked(false); 
     } 
    } 
}); 

的onClick方法是没有意义的,因为你没” t设置任何onClick监听器

0

您注册一个监听器到Button R.id.predbkReset t他的方法public void onClick(View v),但你不要调用这个方法。因为你的听众从来没有注册过,你一旦点击按钮就不会得到通知。

尝试重构代码:

  1. 重命名方法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); 
          } 
         } 
        }); 
        } 
    
  2. 在你onCreate - 方法调用新initResetButton - 方法:

    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.predbk); 
        initResetButton(); 
    
        // Your other stuff 
    }