androidandroid-appcompat

How to listen for state change in SwitchCompat widget?


How to listen for SwitchCompat widget clicks? I want to execute a few statements when the Switch is toggled.

Looking for an equivalent of

button.setOnClickListener(new View.OnClickListener() {
    @Override
        public void onClick(View view) {
        //Do something
    }
});

Solution

  • static Boolean isTouched = false;
    
    switchButton.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent motionEvent) {
                    isTouched = true;
                    return false;
                }
            });
    
    switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
        {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
            {
                if (isTouched) {
                    isTouched = false;
                    if (isChecked) {
                    }
                    else {
                    }
                }
            }
        });
    

    Try this!