在我的 XML布局文件中有16个按钮(数字,加号,减号等)。
我想知道如何检查哪个按钮被按下?
我的想法是每个按钮都使用onClick()方法。但是这个方法有点不切实际,因为有16个按钮呢。我在网上搜索说可以在布局xml中使用android:onClick="function" 的参数。我不会在程序中运用,请问大家谁知道怎么处理多个按钮和OnClickListeners监听事件呢?
声明:
private Button startButton = null;
private Button endButton = null;
初始化:
startButton = (Button)findViewById(R.id.start);
endButton = (Button)findViewById(R.id.end);
startButton.setOnClickListener(new MyListener());
endButton.setOnClickListener(new MyListener());
实现:
public class MyListener implements OnClickListener {
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId() == R.id.start) {
。。。
} else if(v.getId() == R.id.end) {
。。。
}
}
}
你很多的话 你只要都在MyListener中添加就行了
import android.view.View.OnClickListener;
public class MyActivity extends Activity implements OnClickListener {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button buttonA = (Button) findViewById(R.id.buttonA);
Button buttonB = (Button) findViewById(R.id.buttonB);
buttonA.setOnClickListener(this);
buttonB.setOnClickListener(this);
}
public void onClick(View v) {
if(v==buttonA)
{
do something...
}
if(v==buttonB)
{
do something...
}
}
你可以在一个类中处理它们,然后实现OnClickListener事件。或在该Activity中添加:
import android.view.View.OnClickListener;
public class MyActivity extends Activity implements OnClickListener {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button buttonA = (Button) findViewById(R.id.buttonA);
buttonA.setOnClickListener(this);
Button buttonB = (Button) findViewById(R.id.buttonB);
buttonB.setOnClickListener(this);
}
//......
public void onClick(View v) {
switch (v.getId()) {
case R.id.buttonA:
//......
break;
case R.id.buttonB:
// ......
break;
}
}
}
您可以使用一个没有定义为匿名内部类的处理程序。但这个类得是一个单独的类。onClick()将会传递视图,你可以在onClick()中选择。
public class MyActivity implements OnClickListener {
public void onClick(View v) {
Button b = (Button)v;
// do what you want
}
...
}
然后在你的layout.xml放入每个按钮
<Button android:id=".."
android:onClick="onClick"