android回调函数button,JAVA回调函数ANDROID中典型的回调地方

在计算机中回调函数是指通过函数参数传递到其他代码类的,某一块可执行代码的引用,这以设计允许了底层代码调用者在高层定义的子程序。

在JAVA里面我们使用接口的方式来实现函数的回调。

回调的通俗就是:程序员阿祥写了一段程序(CallPerson)其中有回调函数的接口(PhoneCall),并且封装好了程序(CallPerson)。程序员阿呆写了程序(MumCall)要让

阿祥写的程序(CallPerson)调用阿呆写的程序(MumCall)中的方法。于是阿祥的程序(CallPerson)通过程序中(CallPerson)的接口(PhoneCall)调用阿呆的程序(MumCall)的方法。

列子如下:

67701783_1.gif

/*** 阿祥的程序CallPerson

*@authorjoker.chan

**/

public classCallPerson {privatePhoneCall phoneCall;publicCallPerson(PhoneCall phoneCall) {//TODO Auto-generated constructor stub

this.phoneCall =phoneCall;

}public voidphoneCall() {

phoneCall.phonecall();

}

}

67701783_1.gif

67701783_1.gif

/*** 回调函数电话接口

*@authorjoker.chan

**/

public interfacePhoneCall {public voidphonecall();

}

67701783_1.gif

67701783_1.gif

/*** 阿呆的程序MumCall

*@authorjoker.chan

**/

public class MumCall implementsPhoneCall {

@Overridepublic voidphonecall() {//TODO Auto-generated method stub

System.out.println("妈妈打电话叫你回家吃饭了!!!");

}

}

67701783_1.gif

调用方法:

67701783_1.gif

public static voidmain(String[] args) {//TODO Auto-generated method stub

MumCall mc = newMumCall();

CallPerson cp= newCallPerson(mc);

cp.phoneCall();

}

67701783_1.gif

运行结果:

妈妈打电话叫你回家吃饭了!!!

Android中回调函数的基本使用。

1.按钮的监听

67701783_1.gif

Button button = (Button)this.findViewById(R.id.button);

button.setOnClickListener(newButton.OnClickListener() {//回调函数

@override

publicvoidonClick(View v) {

buttonTextView.setText("按钮被点击了");

}

});

67701783_1.gif

上面的代码给按钮加了一个事件监听器,这其实就是“回调”最常见的应用场景之一。我们自己不会显式地去调用onClick方法。用户触发了该按钮的点击事件后,它会由Android系统来自动调用。

2.生命周期函数

67701783_1.gif

@Override

publicvoidonCreate(BundlesaveInstanceState) {super.onCreate(saveInstanceState);//You code...

}

@Override

publicvoidonResume() {super.onResume();//You code...

}

67701783_1.gif

Activity的整个生命周期基本上都说回调函数在发挥作用。

优点:优点主要是将代码中变与不变的部分相分离,从而大大提高了程序的重用性和扩展性。

Android事件侦听器是视图View类的接口,包含一个单独的回调方法。这些方法将在视图中注册的侦听器被用户界面操作触发时由Android框架调用。回调方法被包含在Android事件侦听器接口中:

例如,Android 的view 对象都含有一个命名为 OnClickListener 接口成员变量,用户的点击操作都会交给 OnClickListener的 OnClick() 方法进行处理。

开发者若需要对点击事件做处理,可以定义一个 OnClickListener 接口对象,赋给需要被点击的 view的接口成员变量OnClickListener,一般是用 view 的setOnClickListener() 函数来完成这一操作。

当有用户点击事件时,系统就会回调被点击view的OnClickListener接口成员的OnClick()方法。

实例(对于Android界面上Button点击事件监听的模拟):

1.定义接口public interfaceOnClickListener {public voidOnClick(Button b);

}

67701783_1.gif

2. 定义Buttonpublic classButton {

OnClickListener listener;public voidclick() {

listener.OnClick(this);

}public voidsetOnClickListener(OnClickListener listener) {this.listener =listener;

}

}

67701783_1.gif

67701783_1.gif

3. 将接口对象OnClickListener 赋给 Button的接口成员public classActivity {publicActivity() {

}public static voidmain(String[] args) {

Button button= newButton();

button.setOnClickListener(newOnClickListener(){

@Overridepublic voidOnClick(Button b) {

System.out.println("clicked");

}

});

button.click();//user click,System call button.click();

}

67701783_1.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值