我想知道在所有按钮上添加onclicklistener的简单方法。按钮可以超过20-30。 例如..
Button1 Id ="提交&#34 ;; Button2 Id ="取消"等......
Button b1 = (Button) findViewById(R.id.button1);
Button b2 = (Button) findViewById(R.id.button2);
Button b3 = (Button) findViewById(R.id.button3);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
b3.setOnClickListener(this);
答案 0 :(得分:2)
将android:onClick="mainMenuButtonClick"
设置为 XML 中的所有按钮,然后添加mainMenuButtonClick()
您的活动,并使用switch case
标识按钮,如:
public void mainMenuButtonClick(View v) {
switch (v.getId()) {
case R.id.Button1:
break;
case R.id.Button2:
break;
case R.id.crmButton:
break;
case R.id.Button3:
break;
case R.id.Button4:
break;
case R.id.Button5:
break;
}
}
答案 1 :(得分:1)
首先,创建一个按钮数组:
Button[] buttons = new Button[number_of_buttons];
考虑到您的ID,您可以执行以下操作:
for(int i=0; i<buttons.length; i++)
{
buttons[i]=(Button)findViewById(getResources().getIdentifier("button"+i,
"id", getPackageName());
buttons[i].setOnClickListener(this);
}
答案 2 :(得分:0)
试试这个:
for(int i=0; i < ((ViewGroup)getView()).getChildCount(); i++) {
View v = ((ViewGroup)getView()).getChildAt(i);
if(v instanceof Button) {
v.setOnClickListener(this);
}
}
答案 3 :(得分:0)
只需使用ButterKnife这样的库:
@OnClick({ R.id.btndoor1, R.id.btndoor2, R.id.btndoor3 })
public void pickDoor(Button door) {
if (door.hasPrizeBehind()) {
Toast.makeText(this, "You win!", LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Try again", LENGTH_SHORT).show();
}
}
你必须将onClick()
注入这样的按钮
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_example, container, false);
ButterKnife.inject(this, rootView);