我在屏幕上创建了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;
但我怎么能这样做?
答案 0 :(得分: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;
}
}
答案 1 :(得分:1)
创建一个通用的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);