事件回调 和通知方式的总结(EventBus框架的使用)
2017-09-30 15:46
495 查看
基本介绍 和使用方式:
http://www.jianshu.com/p/a040955194fchttps://juejin.im/entry/570ae5668ac247004c3128a4
使用的情景:
通常在user 退出或者登陆时 通知各个界面进行刷新。 或者当数据完成后通知因为是根据传入的对象进行回调的,所以可以选择 String 类型 判断字符串的标记值 进行针对性的刷新界面!
传统事件通知方式:
1.Activity 和子 fragment间(adapter 和 Acitivity间 等等)可以通过 定义回调函数的方式进行交互
1.自定义回调 在 A类中 定义 接口 和接口方法,并在需要进行回调的地方 使用该方法public class A_Fragment extends BaseFragment { private onSwitchpaperListener onSwitchpaperListener; //定义接口和接口方法 public interface onSwitchpaperListener{ void switchpaper(int i); } //对外提供一个设置监听的方法。 public void setOnSwichtpaerListener(onSwitchpaperListener listener){ this.onSwitchpaperListener=listener; } @Override public void intiEvent() { if(onSwitchpaperListener!=null){ onSwitchpaperListener.switchpaper(position); }else { } } }
在B fragment中 实现具体的操作逻辑,并传入A 中所需要的参数:
mainActivity.getAFragment().setOnSwichtpaerListener(new Slidingleft_Fragment.onSwitchpaperListener() { @Override public void switchpaper(int i) { BaseCenterPaper currentPaper= baseCenterPaperList.get(i); tv_title.setText(lists.get(i).getTitle()); //先移除 fl.removeAllViews(); currentPaper.initData(); fl.addView(currentPaper.getRoot()); } });
2.Activity StartActivityForResult之间的回调通知 。
主要是两个参数 resultcode requedecode请求码用来判断是从那个Activity 发出的 resultcode 用来判断 是从哪个Acitivity返回的
这样 在 onActivityResult 方法中就能准却判断
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == Contants.REQUEST_CODE && resultCode == this.RESULT_OK) { Log.d("登录后mainActivity执行回调","ture"); new Thread() { public void run() { //这儿是耗时操作,完成之后更新UI; runOnUiThread(new Runnable(){ @Override public void run() { //通知子view g if (user != null) { //更新mine refrushMineView(); //更新购物车 refrushShopCarView(); } else { } } }); } }.start(); } if (requestCode == 2 && resultCode == 2) { Log.d("购物车执行回调","ture"); new Thread() { public void run() { //这儿是耗时操作,完成之后更新UI; runOnUiThread(new Runnable(){ @Override public void run() { //通知子view g if(user!=null) { refrushShopCarView(); } else { } } }); } }.start(); } if (user != null) { //跳转至目标Activity if (MyApplication.getInstance(this).getIntent() == null) { } else { MyApplication.getInstance(this).jumpToTargetActivity(this); } } else { } }
注意事项!
onBack()回退方法! 要在super.onBack 之前 setResult 不然会无效, 所得值一直是0
3.handler方式不赘述
4.发送广播
相关文章推荐
- 事件总线分发库EventBus框架的简单使用
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- 转:回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的
- [网络收集]回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证
- [转]System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation="true"/> 或在页面中使用 <% @ Page EnableEventValidation="true" %> 启用了事件验证
- 回发或回调参数无效。在配置中使用 enableEventValidation=true或在页面中使用 启用了事件验证。
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- Android组件间通信机解耦——Android EventBus和Otto框架一、前言 传统的事件传递方式包括:Handler、BroadCastReceiver、Interface 回调,相比之
- EventBus框架使用
- 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。
- Guava之EventBus使用总结
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- 回发或回调参数无效。在配置中使用 pages enableEventValidation=true 或在页面中使用 %@ Page EnableEventValidation=true % 启用了事件验证
- js事件定义方式和获取事件对象event总结
- 回发或回调参数无效。在配置中使用 enableEventValidation=true或在页面中使用 启用了事件验证
- 回发或回调参数无效。在配置中使用 enableEventValidation=true或在页面中使用 启用了事件验证
- 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEvent
- 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。
- 回发或回调参数无效。在配置中使用 enableEventValidation=true或在页面中使用 启用了事件验证。