Android事件处理 - 多个按钮

时间:2015-05-17 07:13:07

标签: android event-handling

我们可以为Android中的多个按钮创建集中式事件处理程序吗? 如果是这样,我们怎么做?

4 个答案:

答案 0 :(得分:3)

Yonatan Nir的解决方案是最简单的,但如果你已经使用Butterknife,你可以这样做:

@OnClick({ R.id.button1, R.id.button2, R.id.button3})
public void onButtonClicked(View theViewThatIsClicked) {
  Toast.makeText(this, "Clicked!", LENGTH_SHORT).show();
}

答案 1 :(得分:2)

您可以使用您提供的View参数来执行此操作:

@Override
public void onClick(final View v)
{
 switch (v.getId()) 
 {
    case R.id.Button1: ....
    case R.id.Button2: ...
 }
}

例如:

class MyActivity extends Activity implements View.OnClickListener
{


@Override
public void onCreate(final Bundle savedInstanceState)
{
    Button button1 = (Button)findViewById(R.id.Button1);
    Button button2 = (Button)findViewById(R.id.Button2);

    button1 .setOnClickListener(this);
    button2 .setOnClickListener(this);
}

 @Override
public void onClick(final View v)
{
 switch (v.getId()) 
 {
    case R.id.Button1: ....
    case R.id.Button2: ...
 }
}
}

答案 2 :(得分:0)

这是一个伪代码:

      class FooActivity extends Activity implements View.OnClickListener{


        //inside onCreate(), find buttons with their ids, For ex;
        Button btn1 = (Button)findViewById(R.id.btn1);
        Buttn btn2 = (Button)findViewById(R.id.btn2)

        // and  register listeners for appropriate Buttons
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this)

        //then implement the listener interface method 
        @Override
        public void onClick(View v){
           int id = v.getId();
           if(id == R.id.btn1 || id==R.id.btn2){
              doSameForBothButtons();
            }

          }
        }
     }

答案 3 :(得分:0)

以下是我集中点击处理程序的方法。

注意:它对不同类型的视图也很有用,不仅仅是Buttons 甚至混合类型(即:您可以使用相同的方法处理ImageButton,TextView和Button)。

示例布局(注意每个Button上的app.put('/contactlist/:id', function(req, res){ var id = req.params.id; console.log(req.body.name); db.contactlist.findAndModify({query: {_id: mongojs.ObjectId(id)}, update: {$set: {photo: req.body.photo, name: req.body.name, price: req.body.price, quantity: req.body.quantity}}, new: true}, function(err, doc){ res.json(doc); }); }); 属性):

android:onClick="clickHandler"

随附代码(注意<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f000" > <Button android:id="@+id/Button1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textStyle="bold" android:text="1" android:onClick="clickHandler" /> <Button android:id="@+id/Button2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textStyle="bold" android:text="2" android:onClick="clickHandler" /> <Button android:id="@+id/Button3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textStyle="bold" android:text="3" android:onClick="clickHandler" /> </LinearLayout> 方法):

clickHandler