今天老师在上安卓的时候,先是给我们介绍了内部类,然后给我们讲了安卓按钮的回调机制。记录一下。
下面模拟安卓里面的按钮的回调机制:
这是一个监听的接口。
public interface OnClickListener {
void onClick();
}
这是按钮的类。
public class Button {
private OnClickListener mOnclickListener;
//将按钮被点击的响应代码保存在mOnclickListener中
public void setOnclickListener(OnClickListener l){
mOnclickListener=l;
}
//当按钮被点击时的响应
public void performClick(){
mOnclickListener.onClick();
}
}
测试类:
package dsfsf;
import java.util.Scanner;
class Cancel implements OnClickListener{
@Override
public void onClick() {
System.out.println("执行取消按钮事件!");
}
}
public class Test {
private static Button btnLogin;
private static Button btnRegister;
private static Button cancel;
private static final int LOGIN=1;
private static final int REGISTER=2;
private static final int CANCEL=3;
public static void main(String args[]){
initButtons();
while(true){
System.out.println("输入:1-登录;2-注册;3-取消");
Scanner input=new Scanner(System.in);
int choise=input.nextInt();
switch (choise) {
case LOGIN:
btnLogin.performClick();
break;
case REGISTER:
btnRegister.performClick();
break;
case CANCEL:
cancel.performClick();
break;
default:
break;
}
}
}
private static void initButtons(){
//创建登录和注册按钮对象
btnLogin =new Button();
btnRegister=new Button();
cancel=new Button();
//将登录按钮的单击事件保存至btnLogin.mOnClickListener中
btnLogin.setOnclickListener(new OnClickListener(){
@Override
public void onClick() {
System.out.println("执行登录按钮事件!");
}
});
btnRegister.setOnclickListener(new Register());
cancel.setOnclickListener(new Cancel());
}
private static final class Register implements OnClickListener{
@Override
public void onClick() {
System.out.println("执行注册按钮事件!");
}
}
}
首先谈谈内部类:我觉得一个类所处的位置不同,它的作用就不一样,并且我们称呼它们的方式也不一样。比如我们在外面new了一个类,那它就是个普通的有名字的类,这个类将被很多其他的类使用,这很正常。当我在一个类A里面又声明了一个有名字的类B,那么B就叫内部类,很显然,该内部类B应该和A类关系很密切,而其他的类几乎不与该内部类B打交道,所以我就把它声明到A类里面了。而假如内部类B只被使用一次,我就没必要特地这样做:B b=new B();因为b将只被使用一次,之后就没用了,于是就有了匿名内部类。上面的测程序为了说明内部类,特地写了三种注册事件的方式。
下面谈谈回调机制:
结合这篇帖子一起理解:http://blog.csdn.net/fengyifei11228/article/details/5729445
说是说回调技术,在我看来这就是java程序的一个巧妙设计。这里所谓的setOnclickListener就是注册函数,在initButtons方法中事先注册好了事件,并说明了,当相应事件发生时应该做哪些动作。
程序运行结果:
输入:1-登录;2-注册;3-取消
1
执行登录按钮事件!
输入:1-登录;2-注册;3-取消
2
执行注册按钮事件!
输入:1-登录;2-注册;3-取消
3
执行取消按钮事件!
输入:1-登录;2-注册;3-取消