【问题标题】:Can I create a custom onClickListener for multiple buttons [duplicate]我可以为多个按钮创建自定义 onClickListener [重复]
【发布时间】:2016-04-13 02:10:22
【问题描述】:

我在屏幕上创建了 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;

但是我该怎么做呢?

【问题讨论】:

  • 是的,它是重复的。这个问题就是我要找的。谢谢!

标签: android onclicklistener


【解决方案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;
    }
}

【讨论】:

    【解决方案2】:

    创建一个通用的 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);
    

    【讨论】:

      猜你喜欢
      • 2013-08-11
      • 1970-01-01
      • 2013-12-01
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多