使用Arouter进行通讯时候,我们往往有需要传输实体类或者复杂型结构数据,也就是withObject(String,Any),然后在目标设置

ARouter.getInstance().inject(this)

navigation()后就能拿到数据了。

点击run 后,会发现一个奇怪的事情,基础类型数据都有拿到,唯独 withObject 传过来的数据为null??这是为什么呢?

这是因为 Arouter 也是基于意图之类的传输数据的,但是内部没有二次封装帮我们进行解析转换,需要我们自己在对应需要的模块实现

SerializationService

自行处理转换。

如下:

/*** 1 参数实体类 带无参构造* 2 不能序列化* 3 提供如下序列化服务* 4 开放式 实体类*/
@Route(path = RouterContacts.HOME_JSON)
class HomeJsonSerializationService : SerializationService {var gson: Gson? = nulloverride fun <T> json2Object(input: String, clazz: Class<T>): T {return gson!!.fromJson(input, clazz)}override fun object2Json(instance: Any): String {return gson!!.toJson(instance)}override fun <T> parseObject(input: String, clazz: Type): T {return gson!!.fromJson(input, clazz)}override fun init(context: Context) {gson = Gson()}
}

实现转换处理即可,开发者无需通过Arouter再去引用设置这个服务,内部会自行进行注解反射。回到之前问题,这时候再运行,withobject传递的数据已经不为空了。tips:组件之间活动传递数据,本质还是基于Intent,要注意数据大小分寸(512kb 限制),不要过度使用

记录小知识:Arouter 组件间通讯实体类数据相关推荐

  1. 微信小程序 服务器触发事件,微信小程序组件间通讯与事件

    ##组件间通讯与事件 一.前言 如果小程序中有可复用的UI且具有一定的功能性,就可以使用自定义组件将其封装起来.(如果仅仅只需要复用UI可使用template)下面介绍父子组件的数据传递方法,以及一个 ...

  2. calces组件化与ARouter组件间通信

    calces组件化与ARouter组件间通信 calces介绍: 属性介绍 ARouter(路由) https://github.com/Tangpj/calces-gradle-plugin cal ...

  3. 用Redux来进行组件间通讯

    用Redux来进行组件间通讯 demo地址 疑惑 之前在做项目的时候,一直会遇到一个困扰我的问题,两个互相独立的子组件如何通讯? 假设现在结构如下 ListItem是一个todoList组件,里面有一 ...

  4. angularjs组件间通讯_angular组件间通讯的实现方法示例

    前言 一个angular应用一般情况下包含多个组件,而且要让组件互相之间能进行通讯(数据传送),这样才能构成一个有机的完整系统. 1.情景引入 下面例举一个实际遇到的情况: 上图页面包含两个组件,&q ...

  5. Vue3(撩课学院)笔记02-创建组件,全局组件,局部组件,父子组件,组件标签化,组件的data数据共享,组件间通讯,props,父传子$ref,子传父$parent

    1.创建一个组件 首先要创建一个根组件进行挂载 再创建一个子组件,完成子组件的逻辑 子组件主要使用template模板来完成布局和逻辑 把子组件通过根组件.component的方法挂载到根组件上 &l ...

  6. 原生微信小程序自定义组件以及组件间通讯

    文章目录 前言 一.新建组件 二.文件介绍 1.index.json 2.index.js 三.在父组件中引入子组件 四.父子组件通讯 属性绑定 事件绑定 获取组件实例 总结 前言 当我们在开发项目时 ...

  7. react系列知识---11组件间抽象

    mixin mixin :将一个模块混入到一个另一个模块中,或是一个 类中 封装 mixin 方法 const mixin = function (obj, mixins) {const newObj ...

  8. 2017-4-20实体类,数据访问类.字符串攻击.防攻击

    程序分三层:界面层.业务逻辑层.数据访问层 这里主要操作的是数据访问层,数据访问层又分为: 1.实体类 2.数据访问类 存放位置:APP_Code文件中 一.实体类 最简单的封装 把数据库的表名变成类 ...

  9. 【微信小程序】组件间通信与事件-获取子组件的实例对象

    1.0 前言 1.1 为何写这篇笔记 小程序官方文档只粗略给了一段代码,让笔者找不到北,故记录下易于理解的过程,以便新手了解和使用 1.2 获取子组件实例对象的作用 当引用了组件,且父组件使用了监听函 ...

最新文章

  1. SQL2000联机丛书:使用和维护数据仓库
  2. R构建幂回归模型(Power Regression)
  3. RSA加密原理:非对称加密鼻祖
  4. 【2012百度之星 / 资格赛】I:地图的省钱计划
  5. sw工程图导出bom_SolidWorks材料明细表自动调用钣金展开尺寸,轻松导出BOM表
  6. 超级计算机操作系统有什么不同,超级计算机功能强大吗?它与普通计算机不同,但也使用Windows系统...
  7. java自定义栈类代码,异常堆栈和自定义类
  8. Java中对象池的本质是什么?(实战分析版)
  9. Node 环境变量 process.env.NODE_ENV 之webpack应用
  10. C++基础之返回数组
  11. 用python偷懒Arcgis(地类编码转地类名称)
  12. Halcon测量圆直径(半径)的方法之暴力拟合法 vs 测量工具法
  13. 数据结构和算法知识点整理
  14. python pygame字体设置_2015/11/3用Python写游戏,pygame入门(3):字体模块、事件显示和错误处理...
  15. 世界精神卫生日:不断变化的世界的应用程序
  16. python将xls文件转换xlsx
  17. 信号发送,槽函数执行,过程中传递的是对象的引用,涉及的拷贝操作
  18. oracle OCP考点在哪,Oracle OCP认证考哪几门
  19. OpenCV学习笔记(Python)———— 画轮廓
  20. aliyun mysql 端口_阿里云怎么查看数据库端口怎么设置

热门文章

  1. 几个javascript框架对比(vue,react,Angular等),如何选择?
  2. ONES 敏捷项目管理迭代流程图文演示
  3. shell运行python
  4. VSCode C/C++ Theme主题自定义配色方案
  5. vscode和ide(JetBrains全款)安装 Material Theme UI主题
  6. 在网络隔离下实现文件传输交换,你的方式真的安全吗?
  7. 6.22(js-->案例应用)
  8. html的行高标签是那个,HTML 2-行高、a标签
  9. SDNU 1040.导弹拦截
  10. 将英文kali改成中文kali