您的位置:首页 > 移动开发 > Android开发

内部接口android.view.View.OnClickListener

2013-05-24 16:52 337 查看
在使用Widget组件来布局时,看到下面一段代码

show= (TextView)findViewById(R.id.show_textview);
press=(Button)findViewById(R.id.click_button);

press.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
show.setText("哎哟,按钮被点到了");
}
} );--接口式匿名内部类


查看一下,Button继承TextView继承View,

setOnClickListener(OnClickListener l)是View中的方法,

/**
* Register a callback to be invoked when this view is clicked. If this view is not
* clickable, it becomes clickable.
*
* @param l The callback that will run
*
* @see #setClickable(boolean)
*/
public void setOnClickListener(OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}


setText()是TextView中的方法,

奇怪的是OnClickListener竟然是定义在View中的接口:

/**
* Interface definition for a callback to be invoked when a view is clicked.
*/
public interface OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
void onClick(View v);
}
总结:
1, 不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例
public class B implements A{}
A a = new B(); //引用变量a被定义为A接口类型,引用了B实例
A a = new A(); //错误,接口不允许实例化

2,类的内部可以定义接口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐