我可以为多个按钮创建自定义 onClickListener [重复]

Posted

技术标签:

【中文标题】我可以为多个按钮创建自定义 onClickListener [重复]【英文标题】:Can I create a custom onClickListener for multiple buttons [duplicate] 【发布时间】: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;

但是我该怎么做呢?

【问题讨论】:

是的,它是重复的。这个问题就是我要找的。谢谢! 【参考方案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);

【讨论】:

以上是关于我可以为多个按钮创建自定义 onClickListener [重复]的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助在Android中使用多个按钮自定义视图

多个提示的单选按钮自定义样式

Java - 如何创建自定义对话框?

跨多个自定义组件使用单选按钮组功能

具有多个 UILabel 和图像的自定义按钮

为注释创建自定义标注