我们可以为Android中的多个按钮创建集中式事件处理程序吗? 如果是这样,我们怎么做?
答案 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