所以我正在开发一款带有数字键盘的应用程序。当然按下按钮时会发生一些事情,所以我必须为每个按钮设置一个onClickListener吗?问题是我在横向模式下有40个按钮,因此我必须创建40个不同的onClickListeners。我认为必须有更好的方法来做到这一点。你们有什么建议吗?
答案 0 :(得分:3)
你可以通过双向实现这个目标,
<强>我强>
声明并定义按钮;
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);
实现按钮监听器,为开关盒内的不同按钮定义作业
private OnClickListener myButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button1 : // do your job
case R.id.button2 : // do your job
case R.id.button3 : // do your job
.....
}
}
}
<强> II。强>
使用android:onclick
属性 -
android:onClick="onClick"
然后在您的活动类中添加onClick
方法。
public void onClick(View v) {
switch(v.getId()){
case R.id.button1 : // do your job
case R.id.button2 : // do your job
case R.id.button3 : // do your job
...
}
}
答案 1 :(得分:1)
是的,肯定有更好的方法..您只需创建一个onClickListener并将其全部设置为它们。您可以通过调用view.setTag(Object)
将任何信息作为视图的标记。
在onClickListener中,您可以view.getTag()
返回相同的对象。
希望它有所帮助。 :)
答案 2 :(得分:1)
在您的活动中实施onClickListener。然后在你的按钮中这样做: -
Button b1=(Button)findViewById(R.id.button1);
b1.setOnClickListener(this);
然后
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.bttn1:
//do something
break;
case R.id.bttn2:
//do something
break;
case R.id.bttn3:
//do something
break;
.
.
.
}
}
答案 3 :(得分:1)
只创建一个onClickListener并为所有按钮设置相同。只要单击按钮,就会调用onClickListener的onclick方法并将视图作为参数。从视图使用getId方法来识别单击哪个按钮并相应地执行操作。有点像这样:
private OnClickListener onButtonlickListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.id_1:
// TODO: Your Code for id_1
break;
case R.id.id_2:
// TODO: Your Code for id_2
break;
case R.id.id_3:
// TODO: Your Code for id_3
break;
default:
break;
}
}
};
我希望这会有所帮助。
答案 4 :(得分:1)
您可以为它们提供所有相同的onClickListener实例,然后根据启动回调的View ID执行不同的操作。所以,在伪代码中 -
public void onClick(View v) {
if(v.getId() == <someid>) {
.. perform action
else if (v.getId() == <someotherid>) {
..perform another action
}
}
或者您可以使用switch语句而不是if。
答案 5 :(得分:1)
让你的类实现onClickListener并覆盖onClick方法。
bClearSearchAllSA.setOnClickListener(this);
public void onClick(View v)
{
switch(v.getId())
{
case R.id.clearSearchAllSA:
case R.id.followingSA:
case R.id.followersSA:
}
}