【Android】简单的接口回调
16lz
2021-01-23
应用场景
工具类封装
举个栗子:百度定位
下面的代码是从百度定位SDK中复制来组成的工具类
public class LocationTool { private Context context; public LocationClient mLocationClient = null; private mLocationListener myListener = new mLocationListener(); public LocationTool(Context context){ this.context = context; Init(); } public void Init(){ mLocationClient = new LocationClient(context); //声明LocationClient类 mLocationClient.registerLocationListener(myListener); //注册监听函数 LocationClientOption option = new LocationClientOption(); option.setIsNeedAddress(true); //可选,是否需要地址信息,默认为不需要,即参数为false //如果开发者需要获得当前点的地址信息,此处必须为true //option.setCoorType("gcj02"); mLocationClient.setLocOption(option);//mLocationClient为第二步初始化过的LocationClient对象//需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用//更多LocationClientOption的配置,请参照类参考中LocationClientOption类的详细说明 } public class mLocationListener extends BDAbstractLocationListener { @Override public void onReceiveLocation(BDLocation address) { //todo } }}
设计接口
需要在 mLocationListener 中获取数据,但这样的结构是没办法获取数据的
可以在 mLocationListener 中添加回调接口,进行操作
public class LocationTool {................../** * 新增一个自定义接口并new出来 */ public AddressListener addressListener; public interface AddressListener{ void address(BDLocation position); //确定处理的值 } //设置getter和setter public AddressListener getAddressListener(){ return addressNoListener; } public void setAddressListener(AddressListener addressListener) { mLocationClient.start(); this.addressListener = addressListener; } //在mLocationListener 调用这个接口 public class mLocationListener extends BDAbstractLocationListener { @Override public void onReceiveLocation(BDLocation address) { //todo addressListener.address(address); } } }
接口回调
调用这个工具类
public class HomePageActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home_page); LocationTool tool = new LocationTool(getApplicationContext()); tool.setAddressListener(new LocationTool.AddressListener() { @Override public void address(BDLocation position) { //在这里获取数据 lat = position.getLatitude(); lng = position.getLongitude(); } }); }}
带数据返回的接口回调大概就这样了
想要执行其他操作也是类似的原理
更多相关文章
- android 两个 activity 用 handler传递数据
- Android保存Serializable数据到本地
- Android通过HTTP协议实现上传文件数据
- Android一个ListView列表之中插入两种不同的数据
- Android 将数据库文件保存至sdcard中
- Android 发送JSON数据到服务端
- SQlite数据库(2)----android 操作