mButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//Temp Empty
}
});
现在我混淆的主要原因是View.OnClickListener(){}。从API中,我了解到这是一个界面。但是,我以前没有真正看到以这种方式声明过的接口。
以下是我的问题:
1." View.OnClickListener"界面是否正确? OnClickListener扩展了View?
2.为什么在" OnClickListener"?后面有括号?参数?
3.为什么括号后面有括号?覆盖视图中的初始onClick方法?
我很抱歉对一小段代码问了很多,但谢谢你的帮助!
答案 0 :(得分:0)
这些被称为anonymous functions
。
:此强>
mButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//Temp Empty
}
});
与
相同View.OnClickListener listner = new OnClickListener () {
@Override
public void onClick (View v) {
// TODO Auto-generated method stub
}
};
mButton.setOnClickListener(listner);
答案 1 :(得分:0)
这是一个匿名课程。你可以阅读更多关于@ http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html的信息,或者在google上搜索java匿名类,以获得更多教程和解释。
答案 2 :(得分:0)
基本上,在View类(在Android中)中存在OnClickListener接口,如下所示:
public interface OnClickListener{
public void onClick(View v);
}
这些接口充当您(开发人员)稍后将定义的函数的占位符。在Android View class
中的某个位置,存在为用户的指针(手指)触摸视图而编写的功能。在此代码中,SDK调用方法onClick(v)
,该方法充当将在稍后定义的代码的占位符。当您(开发人员)通过添加新的OnClickListener来实现此方法时,您实际上将代码注入到调用onClick(v)
的View类中的占位符中;
就@Override
注释而言,我将向您指出explains这个答案。