在所有活动按钮上设置setOnClickListener()的简单方法是什么?

时间:2015-03-05 10:00:12

标签: java android

我想知道在所有按钮上添加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);

4 个答案:

答案 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);