一个OnClickHandler用于多个按钮

mse*_*seo 46 android button clicklistener

我发现自己总是这样做:

    Button button1 = (Button) findViewById(R.id.button1);
    Button button2 = (Button) findViewById(R.id.button2);
    Button button3 = (Button) findViewById(R.id.button3);

    button1.setOnClickListener(menuButtonListener);
    button2.setOnClickListener(menuButtonListener);
    button3.setOnClickListener(menuButtonListener);
...
Run Code Online (Sandbox Code Playgroud)

   private OnClickListener myButtonListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
      switch(v.getId()){
       case R.id.button1 :
    ...
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来设置OnClickListener?

apr*_*ock 59

您还可以使用android:onclick属性在布局xml中设置它.

android:onClick="onClick"
Run Code Online (Sandbox Code Playgroud)

然后在您的activity类中添加onClick方法.

public void onClick(View v) {
...
Run Code Online (Sandbox Code Playgroud)

这是文档.


小智 35

让你的类实现`View.OnClickListener',就像

public class MyActivity extends Activity implements View.OnClickListener {

    Button button1, button2, button3;

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate();

        ...

        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);

        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
   }

   @Override
   public void onClick(View v) {
       switch(v.getId()) {
           case R.id.button1:
           // do stuff;
           break;
           case R.id.button2:
           // do stuff;
           break;
       ...
   }
}
Run Code Online (Sandbox Code Playgroud)


sag*_*its 5

Gettin @foenix回答,你可以简单地做一些事情:

    int[] buttons = {R.id.button1, R.id.button2, R.id.button3, R.id.button4, R.id.button5, R.id.button6, R.id.button7
            , R.id.button8, R.id.button9};
    for (int i = 0; i < buttons.length; i++) {
        Button buttonNum = (Button) rootView.findViewById(buttons[i]);
        buttonNum.setOnClickListener(doSomething);
    }

private OnClickListener doSomething= new OnClickListener() {
     @Override
     public void onClick(View v) {
            //doSomething
   }
};
Run Code Online (Sandbox Code Playgroud)