Android 如何在一种方法中使用多个侦听器?(安卓)

Android 如何在一种方法中使用多个侦听器?(安卓),android,Android,我如何将以下内容放到一个方法中。因此,我可以使用一个侦听器来检查单击了哪个复选框,而不是使用两个侦听器。。谢谢 public void onClick(View view) { switch (view.getId()) { case R.id.safe: if (((CheckBox) view).isChecked()) { ((CheckBox) view).setButtonDrawable(R.drawable.tick);

我如何将以下内容放到一个方法中。因此,我可以使用一个侦听器来检查单击了哪个复选框,而不是使用两个侦听器。。谢谢

public void onClick(View view) {
    switch (view.getId()) {
    case R.id.safe:
        if (((CheckBox) view).isChecked()) {
            ((CheckBox) view).setButtonDrawable(R.drawable.tick);
        } else {
            ((CheckBox) view).setButtonDrawable(R.drawable.black);
        }
        break;

    }
}

}在当前类中实现setOnClickListener


您可以实现
View.OnClickListener
,然后您可以有一个方法

public class NameClass extends Activity implements View.OnClickListener {
   public void onClick(View view) {
      switch(view.getId()) {
         case R.id.someWidget:
            // to do
         break;
         case R.id.anotherWidget:
            // to do
         break;
      }
   }
}

注意:还有一个建议,请在检查更改侦听器时尝试查看

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
   switch (buttonView.getId()) {
      case R.id.someButton:
         if (isChecked) {
            // some work
         }
         else {
            // some another work
         }
      break;
   }
}

您可以在侦听器中检查ID:

private void setListeners() {
    final View muf = findViewById(R.id.muf);
    final View crewArea = findViewById(R.id.crewArea);

    OnclickListener ocl = new OnClickListener() {
        @OVerride
        public void onClick(View view) {
            Checkbox ck = null;
            switch(view.getId()) {
                case R.id.muf: ck = muf; break;
                case R.id.crewArea: ck = crewArea; break;
            }

            if(ck == null)
                return;

            if (ck.isChecked()) {
                ck.setButtonDrawable(R.drawable.tick);
            } else {
                ck.setButtonDrawable(R.drawable.black);
            }
        }
    };

    muf.setOnClickListener(ocl);
    crewArea.setOnClickListener(ocl);
}

@AleksG谢谢,在正常情况下,我会建议他使用
OnCheckedChangeListener
,但他使用了
OnClickListener
,所以我肯定添加了这两种方法,也许第二种方法对其他人有用。@hawaii.5-0:我使用了你的代码,但现在“勾号”不会出现:((代码更新)。您应该使用onCheckedChangeListener man,这通常是一种常见的方法。
private void setListeners() {
    final View muf = findViewById(R.id.muf);
    final View crewArea = findViewById(R.id.crewArea);

    OnclickListener ocl = new OnClickListener() {
        @OVerride
        public void onClick(View view) {
            Checkbox ck = null;
            switch(view.getId()) {
                case R.id.muf: ck = muf; break;
                case R.id.crewArea: ck = crewArea; break;
            }

            if(ck == null)
                return;

            if (ck.isChecked()) {
                ck.setButtonDrawable(R.drawable.tick);
            } else {
                ck.setButtonDrawable(R.drawable.black);
            }
        }
    };

    muf.setOnClickListener(ocl);
    crewArea.setOnClickListener(ocl);
}