添加单击侦听器到多个按钮?

时间:2014-01-07 01:21:34

标签: java android

我知道1个按钮是:

Button buttonOne = (Button) findViewById(R.id.button1);
buttonOne.setOnClickListener(new Button.OnClickListener() {
    public void onClick(View v) {
        //Do stuff here
    }
});

如果我有多个按钮怎么办?这是按下任何按钮的一般方法吗?

2 个答案:

答案 0 :(得分:1)

您可以在内部类中实现View.OnClickListener而不是匿名类,实例化它,并将其用于所有这样的按钮;其中handleButton1/2()是父活动中的方法。

private class MyEventListener implements View.OnClickListener {
    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button1_id:
            handleButton1();
            break;
            case R.id.button2_id:
            handleButton2();
            break;
        }
    }
}

内部主要活动onCreate():

OnClickListener mMyEventListener = new MyEventListener();
button1.setOnClickListener(mMyEventListener);
button2.setOnClickListener(mMyEventListener);

我喜欢这个,因为我可以在case块中对具有相似行为的按钮进行分组,或者我可以在同一个对象上实现多个接口,因此我的所有UI交互/回调都可以轻松跟踪位置,而不是数十个匿名监听器类形式的重复代码。例如,如果我有列表视图并将AdapterView.OnItemClickListener传递给mMyEventListener,我可以扩展ListView.setOnItemClick

答案 1 :(得分:0)

每个按钮都有自己的监听器,但当然你可以从同一个类中的所有监听器调用一个commons方法

e.g。

 Button buttonOne = (Button) findViewById(R.id.button1);
 buttonOne.setOnClickListener(new Button.OnClickListener() {
   public void onClick(View v) {
    //Do stuff here
    doStuff (v);
   }
 });