有人可以解释一下关于Android开发的一小段java代码吗?

时间:2015-02-04 05:46:35

标签: java android class inheritance interface

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方法?

我很抱歉对一小段代码问了很多,但谢谢你的帮助!

3 个答案:

答案 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这个答案。