我可以为多个按钮创建自定义onClickListener

时间:2016-04-13 02:10:22

标签: android onclicklistener

我在屏幕上创建了12个按钮,我不需要以编程方式创建更多按钮。

我需要的是拥有一个通用的onClickListener方法,该方法将确定按下哪个按钮并进入case语句以确定要执行的操作。

通常我会这样:

b2 = (Button) findViewById(R.id.button2);
    b2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //myFancyMethod(v);
        }
    });

其中xml中的button2在代码中分配给b2,而onClick调用FancyMethod。我想的是:

switch(R.id()) {
        case R.id.button2:
            callMethodForButton2;
            return true;

但我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

实现button.onclicklistener

public class ContactsDetailsActivity extends Activity implements Button.OnClickListener
在你的oncreate中

Button btn1 = (Button) findViewById(R.id.btn1);
    btn1.setOnClickListener(this);


Button btn1 = (Button) findViewById(R.id.btn2);
    btn1.setOnClickListener(this);

然后按alt enter然后添加你的switch case语句

来实现这些方法
@Override
public void onClick(View view) {
    switch (view.getId()){
        case R.id.btn1:
            "your code when btn1 is clicked"
            break;
        case R.id.btn2:
            "your code when btn2 is clicked"
            break;
    }
}

答案 1 :(得分:1)

创建一个通用的onclick侦听器并在onCreate中分配:

private View.OnClickListener onClickListn = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           switch(R.id()) {
              case R.id.button2:
                 //callMethodForButton2;
                   return true;
              case R.id.button3:
                //Cintinue like this.
        }
    };

创建一个按钮数组并指定onClickListeners。

ArrayList<Button> btnArr = nea ArrayList<>;

btnArr.add((Button)findViewById(R.id.Button2));
//add every button lile this

for(Button btn:btnArr){
    btn.setOnClickListener(onClickListn);
}

或者你可以像

一样直接进行搜索
((Button)findViewById(R.id.Button2)).setOnClickListener(onClickListn);