如何在SwitchCompat小部件中侦听状态更改?

Sla*_*lay 24 android android-appcompat

如何监听SwitchCompat小部件点击?我想在切换Switch时执行一些语句.

寻找相当于

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

Kon*_*nov 51

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 {
                }
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

试试这个!


bat*_*eva 8

你只需要这个(不需要setOnTouchListener):

switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
    {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {

                if (isChecked) {
                     //if 'isChecked' is true do whatever you need...
                }
                else {
                }
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

  • 如果要检查已检查更改是来自用户触摸而不是以编程方式还是来自数据绑定,该怎么办?你的陈述不正确. (3认同)

Sho*_*omu 5

随着 Butterknife SwitchCompat 状态的改变

  @OnCheckedChanged(R.id.switchCompat)
  public void onCheckedChanged(SwitchCompat switchCompat, boolean isChecked) {
    Log.i("skh", "check:" + isChecked);

    if (isChecked) {
        // Log.i("skh","check:"+isChecked);
    } else {

    }
}
Run Code Online (Sandbox Code Playgroud)