Android: चेकबॉक्स श्रोता


110

मैं एक से अधिक श्रोता रखना चाहता हूँ CheckBox। मैं जानकारी के लिए देखा और यह इस तरह है:

satView = (CheckBox)findViewById(R.id.sateliteCheckBox);

satView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        if (isChecked){
            // perform logic
        }
    }

});

समस्या यह है कि ग्रहण सोचता है कि यह एक के OnCheckedChangeListenerलिए है RadioGroupऔर यह काम नहीं करता है। मैं इसे कैसे ठीक करूं?

जवाबों:


268

तुम यह केर सकते हो:

satView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

       @Override
       public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {

       }
   }
);     

1
धन्यवाद और यहां बताया गया है कि इसे कैसे हटाया जाए: stackoverflow.com/questions/18881817/…
— Michal

OnCheckedChangeListenerऔर CompoundButton.OnCheckedChangeListenerअलग हैं।
— zionpi

के लिए kotlin satView.setOnCheckedChangeListener {buttonView, _ -> अगर (buttonView.isChecked) {// एक्शन} करना है, तो {// एक्शन परफॉर्म करें}}
— अमीनुल हक Aome

48

आप एक सरल के लिए भी जा सकते हैं View.OnClickListener:

satView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if(((CompoundButton) view).isChecked()){
            System.out.println("Checked");
        } else {
            System.out.println("Un-Checked");
        }
    }
});

1
यह वास्तव में केवल एक कार्यशील समाधान है जब मैं चेकबॉक्स क्लिक एक्शन सुनना चाहता था , न कि इसकी स्थिति जैसे अन्य समाधान वहां सुझाते हैं।
— एक्यूना

19

आपको त्रुटि मिलती है क्योंकि आपने गलत पैकेज आयात किया है। आपको चाहिए import android.widget.CompoundButton.OnCheckedChangeListener;

तो कॉलबैक होना चाहिए:

        box.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // TODO Auto-generated method stub

        }
    });

11

इसे इस्तेमाल करे:

satView = (CheckBox) findViewById(R.id.sateliteCheckBox);

satView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
          if (buttonView.isChecked()) { 
                // checked
          } 
          else 
          {
                // not checked
          }
    }

});

उम्मीद है की यह मदद करेगा।


4

इसे इस्तेमाल करे

satView.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if (isChecked){
                // perform logic
            }
        }

    });

4

के RadioGroup groupसाथ बदलें CompoundButton buttonViewऔर फिर अपने आयात को ठीक करने के लिए Ctrl + Shift + O दबाएं।


4

आप इस कोड का उपयोग कर सकते हैं।

public class MySampleActivity extends Activity {
    CheckBox cb1, cb2, cb3, cb4;
    LinearLayout l1, l2, l3, l4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        cb1 = (CheckBox) findViewById(R.id.cb1);
        cb2 = (CheckBox) findViewById(R.id.cb2);
        cb3 = (CheckBox) findViewById(R.id.cb3);
        cb4 = (CheckBox) findViewById(R.id.cb4);
        l1 = (LinearLayout) findViewById(R.id.l1);
        l2 = (LinearLayout) findViewById(R.id.l2);
        l3 = (LinearLayout) findViewById(R.id.l3);
        l4 = (LinearLayout) findViewById(R.id.l4);
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(1));
        cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(2));
        cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(3));
        cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(4));
    }

    public class MyCheckedChangeListener implements CompoundButton.OnCheckedChangeListener {
        int position;

        public MyCheckedChangeListener(int position) {
            this.position = position;
        }

        private void changeVisibility(LinearLayout layout, boolean isChecked) {
            if (isChecked) {
                l1.setVisibility(View.VISIBLE);
            } else {
                l1.setVisibility(View.GONE);
            }

        }

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            switch (position) {
                case 1:
                    changeVisibility(l1, isChecked);
                    break;
                case 2:
                    changeVisibility(l2, isChecked);
                    break;
                case 3:
                    changeVisibility(l3, isChecked);
                    break;
                case 4:
                    changeVisibility(l4, isChecked);
                    break;
            }
        }
    }
}

आप 'LinearLayout' को अपने 'changeVisibility (LinearLayout लेआउट, बूलियन को कैसे चेक किया जाता है) पास कर रहे हैं' विधि अभी तक आप हर बार केवल एक लेआउट की दृश्यता बदल रहे हैं?
— ब्रैडली विल्सन

4

क्रिस द्वारा कोटलिन में स्वीकृत उत्तर का अनुवाद:

val checkBox: CheckBox = findViewById(R.id.chk)
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
    // Code here 
}

1
नोट: यदि बटन दृश्य का उपयोग नहीं किया गया है: "{_, isChecked ->"
— Elletlar

2
h.chk.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View view)
    {
        CheckBox chk=(CheckBox)view; // important line and code work
        if(chk.isChecked())
        {
            Message.message(a,"Clicked at"+position);
        }
        else
        {
            Message.message(a,"UnClick");
        }
    }
});

1
ढेर अतिप्रवाह में आपका स्वागत है! आप इसे कैसे काम करते हैं यह समझाने के लिए इसे संपादित करके इस उत्तर को बेहतर बना सकते हैं ।
— user8397947

1

यदि आप इंटरफ़ेस कार्यान्वयन के साथ कोटलिन में ऐसा करना चाह रहे हैं।

class MainActivity: AppCompatActivity(),CompoundButton.OnCheckedChangeListener{

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

      val yourCheckBox = findViewById<CheckBox>(R.id.check_box)
      yourCheckBox.setOnCheckedChangeListener(this)

    }

 override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
        when(buttonView?.id){
            R.id.check_box -> Log.d("Checked: ","$isChecked")
        }
    }

}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.