How to do something when a checkbox change state?

后端 未结 3 778
抹茶落季
抹茶落季 2020-12-07 01:24

This is my code:

    

        
相关标签:
3条回答
  • 2020-12-07 01:29

    I believe a RadioButton would be more suitable for your aims.

    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/radio_group1">
        <RadioButton
            android:id="@+id/sprint"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/rad_option1"
            android:checked="true"
        android:onClick="onRadioButtonClick"
            />
        <RadioButton
            android:id="@+id/marathon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/rad_option2"
            android:onClick="onRadioButtonClick"
             />
        <RadioButton
            android:id="@+id/neverending"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/rad_option3"
            android:onClick="onRadioButtonClick"
             />
    </RadioGroup>
    

    Then in your code:

    public void onRadioButtonClick(View v) {
        RadioButton button = (RadioButton) v;
        // DO YOUR THING HERE DEPENDING ON WHICH RADIOBUTTON IS PICKED
    }
    

    In this case, you won't have to deal with disabling other options. The user will have only one option to pick by default.

    0 讨论(0)
  • 2020-12-07 01:37
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    
        int id = buttonView.getId();
    
        if(isChecked){
           switch(id){
              case R.id.sprint:
              //add to database
              ...
           }
        }
        else{
          switch(id){
              case R.id.sprint:
              //remove from database
              ...
           }
       }
    }
    

    This should allow you to with ID's. Hope it works.

    0 讨论(0)
  • 2020-12-07 01:38

    This is the way you are notified about checked changes:

    CheckBox check = findViewById(R.id.sprint_checkbox);
    check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                //do stuff
    
            }
        });
    

    You can also let your activity implements the OnCheckedChangeListener interface and then:

    CheckBox check1 = findViewById(R.id.sprint_checkbox);
    CheckBox check2 = findViewById(R.id.marathon_checkbox); 
    CheckBox check3 = findViewById(R.id.never_ending_checkbox);
    
    check1.setOnCheckedChangeListener(this);
    check2.setOnCheckedChangeListener(this);
    check3.setOnCheckedChangeListener(this);
    

    Overriding the interface method:

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        switch(buttonView.getId()){
                   case R.id.sprint_checkbox:
                     //do stuff
                   break;
                   case R.id.marathon_checkbox:
                     //do stuff
                   break;
                   case R.id.never_ending_checkbox:
                    //do stuff
                   break;
    
                }
    
    }
    
    0 讨论(0)
提交回复
热议问题