美文网首页Android开发Android知识
利用Android回调机制打造简单的Dialog调用

利用Android回调机制打造简单的Dialog调用

作者: RoadToGeek | 来源:发表于2016-06-13 00:57 被阅读976次

写作原因:Android回调机制是Android开发者绕不开的一个点,对于它的掌握学习十分重要。本文由于作者水平有限可能存在纰漏,对于回调机制的学习掌握仍在途中,以后会推出更多的相关文章。


简介 

接口回调是Android中一种常用的机制,如Button点击事件就是接口回调的具体实现。Fragment与Activity之间的通信机制也是基于接口回调实现,感兴趣的可以阅读博主上篇关于Fragment通信的文章(基于Google官方文档):(Fragment间的通信)。对于接口回调,作为初学者,个人有一下的一点认识:我们可以把接口看作是一个呼叫端口,是在某个功能类(发送方)完成自身功能过程中触发某些动作时通过接口中的某一个方法呼叫接口,然后接口将这种呼叫传至实现该接口的类(接收处理方)中,该类通过实现回调方法对该呼叫作出反馈。下面是Wikipedia上面关于回调机制的定义,有兴趣可以看看。

In computer programming, a callback is a piece of executable code that is passed as an argument to other code, which is expected to call back (execute) the argument at some convenient time. The invocation may be immediate as in a synchronous callback, or it might happen at a later time as in an asynchronous callback. In all cases, the intention is to specify a function or subroutine as an entity that is, depending on the language, more or less similar to a variable.

实现 

实现代码是最好的学习方式,下面博主通过封装一个简单的Dialog来讲解接口回调的具体用法。平常使用Dialog时如果按照标准写法来有时会显得很繁琐,博主因为特定需要将其封装成一个只有message和“确定”,“取消”按钮点击事件的工具。下面我将按照步骤一步步实现:

 定义接口 

在简介中已经说过,接口是一个呼叫端口,是通信的中介。内部的方法类比为不同请求。的本例中的接口是在我们点击Positive Button和Negative Button时被呼叫的。所以定义一下的接口:

```

public interface onButtonClick{

public void OnPositive();

public void OnNegative();

}

```

上面的接口中有两个方法,分别在点击Positive Button和Negative Button时回调

实现接口

这包括两个部分,一个是在功能类(发送方)向接口发出呼叫时实现回调:

先创建回调对象mCallBack:

```

private onButtonClick mButtonClickCallBack;

```

然后在触发某个动作时(当点击Dialog上的按钮时)发出回调(呼叫接口):

```

builderSec.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

mButtonClickCallBack.OnNegative();

}

});

在另一个类(接收处理方)中实现回调方法对该呼叫作出反馈:

先实现该接口,可以在功能类中定义以下方法:

public void setOnButtonClick(onButtonClick mNegativeCallBack) {

this.mButtonClickCallBack = mNegativeCallBack;

}

MyDialog deleteDialog = new MyDialog(getActivity(),"RTGBrowser","是否删除当前历史记录?");

deleteDialog.setOnButtonClick(new MyDialog.onButtonClick() {

@Override

public void OnPositive() {

//TODO:在这里实现点击Positive按钮的逻辑;

}

@Override

public void OnNegative() {

//TODO:在这里实现点击Negative按钮的逻辑;

}

});

这样就通过接口回调实现对一个Dialog进行封装,下面贴出完整的代码:

 源码 

MyDialog.class

package com.example.vincebarry.exam.function;

import android.content.Context;

import android.content.DialogInterface;

import android.support.v7.app.AlertDialog;

public class MyDialog {

private onButtonClick mButtonClickCallBack;

private Context context;

private String title;

private String message;

AlertDialog.Builder builderSec;

public interface onButtonClick{

public void OnPositive();

public void OnNegative();

}

public MyDialog(Context context,String title,String message){

this.context = context;

this.title = title;

this.message = message;

builderSec = new AlertDialog.Builder(context);

builderSec.setTitle(title);

builderSec.setMessage(message);

builderSec.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

mButtonClickCallBack.OnPositive();

}

});

builderSec.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

mButtonClickCallBack.OnNegative();

}

});

AlertDialog dialogSec = builderSec.show();

}

public void setOnButtonClick(onButtonClick mNegativeCallBack) {

this.mButtonClickCallBack = mNegativeCallBack;

}

}

MainActivity.class

MyDialog deleteDialog = new MyDialog(getActivity(),"RTGBrowser","是否删除当前历史记录?");

deleteDialog.setOnButtonClick(new MyDialog.onButtonClick() {

@Override

public void OnPositive() {

DataSupport.delete(TableHistoryLocal.class,positionInDb);

queryAndTrans();

roadData();

}

@Override

public void OnNegative() {

//donothing.

}

});

水平不足,存在纰漏或错误请指教!!

相关文章

  • 利用Android回调机制打造简单的Dialog调用

    写作原因:Android回调机制是Android开发者绕不开的一个点,对于它的掌握学习十分重要。本文由于作者水平有...

  • callback function(回调函数)

    简单的说,我们调用别人的API叫call,调用的第三方api调用我们的函数叫回调(callback) 回调机制 比...

  • 回调函数callback

    回调函数callback 回调函数:简而言之就是某个特定事件发生时被指定调用的函数。运行机制简单理解就是:现在有主...

  • 带你了解Android接口回调机制

    Android接口回调机制 接口回调是在Android中运用广泛的一种机制,你一定会眼熟它,接下来,我们从两个方面...

  • Java 回调机制

    参考链接 Java回调机制解读 回调的思想 类A的a()方法调用类B的b()方法 类B的b()方法执行完毕主动调用...

  • java回调机制

    java的调用机制主要分为同步调用、异步调用、回调这三种,当然也包括一些其它的,例如异步回调等。 同步调用是我们平...

  • 2020 Android常见面试题

    Android: 前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回...

  • Android 回调机制

    今天无意中看到了说java的回调机制,我感觉就和我以前用过的一样啊。。。所以就记录下来。。。 说说怎么接触到回调的...

  • Android创建阻塞式模态对话框Dialog-Loop的实现方

    由于Android的Dialog是非阻塞的方式,每次弹出一个输入框或确认操作框都需要实现回调接口和处理回调方法。某...

  • 回调函数和array_map()函数

    回调函数:某个函数通过利用指针来重复调用某个函数。被调用的函数成为回调函数。 array_map( [函数名字],...

网友评论

    本文标题:利用Android回调机制打造简单的Dialog调用

    本文链接:https://www.haomeiwen.com/subject/jjcwlttx.html