我可以为多个按钮创建自定义 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章