您有三个选择:
常见于 1,2) 您需要为布局 XML 文件中的每个按钮分配一个 id
<Button android:id="@+id/my_button1"
..........
/>
<Button android:id="@+id/my_button2"
..........
/>
1) 在setContentView()之后的activity的onCreate()方法中,你需要为每个按钮设置一个新的OnClickListener。
public class MyActivity extends Activity {
int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myButton1 = (Button) findViewById(R.id.my_button1);
Button myButton2 = (Button) findViewById(R.id.my_button2);
myButton1.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// Do what you want here
a = 1;
}
});
myButton2.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// Do what you want here
a = 2;
}
});
}
2) 正如您在第一种方法中看到的,我们需要从OnClickListener 为每个按钮创建一个新对象。出于性能和可读性的原因,我们可以将所有这些组合成一个OnClickListener。
public class MyActivity extends Activity implements View.OnClickListener {
int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myButton1 = (Button) findViewById(R.id.my_button1);
myButton1.setOnClickListener(this);
Button myButton2 = (Button) findViewById(R.id.my_button2);
myButton2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.my_button_1:
a = 1;
break;
case R.id.my_button_2:
a = 2;
break;
}
}
...
}
3) 您不需要为此选项分配 id,您只需要在 XML 中分配方法名称,然后在活动中以完全相同的名称实现相同的方法,但它必须将 View 对象作为参数。
<Button
...
android:onClick="button1Click" />
<Button
...
android:onClick="button2Click" />
然后在您的活动中编写方法。
public class MyActivity extends Activity implements View.OnClickListener {
int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void button1Click(View v) {
a = 1;
}
public void button2Click(View v) {
a = 2;
}
}
这就是你所有的选择。我个人更喜欢2号。