我知道1个按钮是:
Button buttonOne = (Button) findViewById(R.id.button1);
buttonOne.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
//Do stuff here
}
});
如果我有多个按钮怎么办?这是按下任何按钮的一般方法吗?
答案 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);
}
});