关于安卓回调的一些理解
来源:互联网 发布:淘宝模板什么意思 编辑:程序博客网 时间:2024/05/18 02:03
以安卓Button组件为例,先上代码:
对于安卓自身系统层:
1.定义接口:
public interface OnClickListener{
public onClick();
}
2.定义Button:
public class Button{
public setOnclickListener(OnClickListener onClickListener){
onClickListener.onClick();
}
}
对于开发APP的程序员:
在布局文件定义Button的ID:btn。
public class Activity{
Button button =(Button) findViewById(R.id.btn);
button.setOnclickListener(new OnClickListener(){
@Override
public void onClick(View view){
//点击按钮实现的响应
}
})
}
上面的过程就是一个回调的过程,首先作为安卓系统而言,它不可能把点击的所有响应都给你定义出来,而只是定义好一个Button 组件,在里面放一个setOnClickListener()方法,再把OnClick接口作为实参传到方法中,这时候开发人员要用Button组件,调用setOnClickListener()时,在参数定义了一个匿名内部类,当然匿名的累不能正常的new出来,所以这里使用接口加匿名类来创建这个接口对象的,相当于是new 一个匿名类然后实现了OnClickListener接口,那么这个匿名类必然要重写里面的方法,这个类把引用(实际上就是对象的首地址)传给系统setOnClickListener(),而setOnClickListener()的里面的逻辑却是调用onClick()方法,系统的onClick()是没有方法体的,这时系统反过来调用程序员实现了的方法,就实现了按钮点击的响应。
/**************************************************************************************************************************************************/
那么要实现两个对象之间的传值呢?其实原理都一样的,如下代码:
interface
CALL {
void
get_in(
int
abc);
}
public
class
interface_class {
int
aaa=
14
;
int
getdata(CALL call){
call.get_in(aaa);
return
1
;
}
}
public
class
callbacttest {
public
static
void
main(String[] args) {
int
x=
new
interface_class().getdata(
new
CALL() {
@Override
public
void
get_in(
int
bbbb) {
System.out.println(bbbb);//打印出传过来的值,当然你也可以定义一个变量保存起来
}
});
System.out.println(x);
}
}
interface_class里面的14就已经传到callbacttest里面并且打印出来了。
- 关于安卓回调的一些理解
- 关于JAXB的一些理解
- 关于bitmap的一些理解
- 关于Hook的一些理解
- 关于JavaBean的一些理解
- 关于异常的一些理解
- 关于内存的一些理解
- 关于内存的一些理解
- 关于MFC的一些理解
- 关于编码的一些理解
- 关于枚举的一些理解
- 关于const的一些理解
- 关于矩阵的一些理解
- 关于编码的一些理解
- 关于产品的一些理解
- 关于protobuff的一些理解
- 关于mutex的一些理解
- 关于servlet的一些理解
- Cow Exhibition(多重背包问题)
- day_10-acm 栈(stack)
- 代码大全读书笔记
- 《android开发艺术探索》笔记之Bitmap的加载和Cache
- android欢迎页通知栏隐藏
- 关于安卓回调的一些理解
- HDOJ 1201 18岁生日
- 浅析C/C++中的switch/case陷阱
- Codeforces Round #363 (Div. 1) C LRU
- hihoCoder_1014
- hdoj 4548 美素数
- 设计模式之代理模式
- Scalaz(49)- scalaz-stream: 深入了解-Sink/Channel
- android沉浸式