我知道1个按钮,它是:添加点击监听器到多个按钮?
Button buttonOne = (Button) findViewById(R.id.button1);
buttonOne.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
//Do stuff here
}
});
如果我有多个按钮?这是什么时候按下任何按钮的一般方法?
我知道1个按钮,它是:添加点击监听器到多个按钮?
Button buttonOne = (Button) findViewById(R.id.button1);
buttonOne.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
//Do stuff here
}
});
如果我有多个按钮?这是什么时候按下任何按钮的一般方法?
每个按钮都有自己的监听器,但当然你可以调用所有听众的公共方法在同一类
例如
Button buttonOne = (Button) findViewById(R.id.button1);
buttonOne.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
//Do stuff here
doStuff (v);
}
});
“每个按钮都有自己的侦听器”不一定,它们只存储对实现特定侦听器接口的对象的引用,_could_可以是代码中的匿名类的实例,但不必(请参阅@ nexus_2006的答案) 。 –
而是一个匿名类的,你可以在一个内部类实现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);
我喜欢这个,因为我可以与壳体块内类似的行为组按钮,或我可以实现相同的对象上的多个接口,以便所有的我的UI交互/回调可以很容易地跟踪位置,而不是以几十个匿名监听器类的形式重复出现的代码。例如,如果我有一个列表视图并将mMyEventListener
传递给ListView.setOnItemClick
,我可以扩展AdapterView.OnItemClickListener
。
我建议你学习Java基础知识。 – Emmanuel
不,每个按钮都有自己的监听器 –
更具体的问题是什么? –