我有一个活动:
public class Mtest extends Activity {
Button b1;
Button b2;
public void onCreate(Bundle savedInstanceState) {
...
b1 = (Button) findViewById(R.id.b1);
b2 = (Button) findViewById(R.id.b2);
b1.setOnClickListener(myhandler);
b2.setOnClickListener(myhandler);
...
}
View.OnClickListener myhandler = new View.OnClickListener() {
public void onClick(View v) {
// MY QUESTION STARTS HERE!!!
// IF b1 do this
// IF b2 do this
// MY QUESTION ENDS HERE!!!
}
}
}
如何检查点击了哪个按钮?
发布于 2010-07-24 00:16:07
你将会学到一种简单的方法,那就是:
public class Mtest extends Activity {
Button b1;
Button b2;
public void onCreate(Bundle savedInstanceState) {
...
b1 = (Button) findViewById(R.id.b1);
b2 = (Button) findViewById(R.id.b2);
b1.setOnClickListener(myhandler1);
b2.setOnClickListener(myhandler2);
...
}
View.OnClickListener myhandler1 = new View.OnClickListener() {
public void onClick(View v) {
// it was the 1st button
}
};
View.OnClickListener myhandler2 = new View.OnClickListener() {
public void onClick(View v) {
// it was the 2nd button
}
};
}
或者,如果您只使用一个点击侦听器,则可以执行以下操作:
View.OnClickListener myOnlyhandler = new View.OnClickListener() {
public void onClick(View v) {
switch(v.getId()) {
case R.id.b1:
// it was the first button
break;
case R.id.b2:
// it was the second button
break;
}
}
}
不过,我不建议这样做,因为您必须为使用的每个按钮添加一个if
。这很难维护。
发布于 2012-02-08 23:35:32
或者,您可以尝试相同的方法,但不使用侦听器。在按钮XML定义中:
android:onClick="ButtonOnClick"
在您的代码中定义ButtonOnClick
方法
public void ButtonOnClick(View v) {
switch (v.getId()) {
case R.id.button1:
doSomething1();
break;
case R.id.button2:
doSomething2();
break;
}
}
发布于 2012-02-08 22:34:06
我更喜欢:
class MTest extends Activity implements OnClickListener {
public void onCreate(Bundle savedInstanceState) {
...
Button b1 = (Button) findViewById(R.id.b1);
Button b2 = (Button) findViewById(R.id.b2);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
...
}
然后:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.b1:
....
break;
case R.id.b2:
....
break;
}
}
Switch
-case
比if
-else
更容易维护,而且这种实现不需要创建很多类变量。
https://stackoverflow.com/questions/3320115
复制相似问题