【发布时间】:2013-07-06 13:47:54
【问题描述】:
为我的标题道歉,我无法正确表达问题。
我看到OnCLickListener 以两种方式实现。第一个是通过表示您的类实现OnCLickListener 来完成的。第二个通过让您自己声明来完成任务。
为什么在第一个选项中您可以简单地将this 作为您的setOnCLickListener 参数,但在第二个选项中您必须自己创建OnClickListener 对象?
第一个:
public class WidgetConfig extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.widgetconfig);
Button b = (Button)findViewById(R.id.bwidgetconfig);
b.setOnClickListener(this);
}
//onClick defined outside of the onCreate
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
第二个:
public class WidgetConfig extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.widgetconfig);
Button b = (Button)findViewById(R.id.bwidgetconfig);
b.setOnClickListener(bListener);
}
private Button bListener = new OnClickListener(){
b.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//TO-DO
}
});
【问题讨论】:
-
这个问题与android无关,它与您的JAVA概念有关
-
方式#3 - 仅供参考,您还可以创建自己的自定义类,让它实现 ClickListener 接口,然后创建该侦听器的新实例。然后调用:setOnClickListener(new YourCustomClass())。这是封装处理点击操作的代码的好方法。
标签: java android onclicklistener