ARouter(七) 依赖注入

2023-10-29

当你从FirstActivity跳到SecondActivity, 有时需要把参数值放在intent里面传过去。

ARouter的依赖注入会帮你在SecondActivity里面的属性直接赋好参数值。 当然需要你事先在SecondActivity已经定义好属性,并且是public的。

 

先看下面的代码:

添加了两个接受参数的属性。

public class SecondActivity extends AppCompatActivity {

    @Autowired
    public int testInt;

    @Autowired
    public String testString;

    
    public void onCreated(){
       ARouter.inject(this);
    }
}

 

FirstActivity 通过ARouter打开SecondActivity,SecondActivity在执行 ARouter.inject(this)后,int testInt;   String testString 这两个属性会被赋好值。

public class FirstActivity extends AppCompatActivity {

    public void onClick(View view){
          
       ARouter.getInstance()
                    .build("/app/SecondActivity")
                    .withInt("testInt", testInt)
                    .withString("testString", testString)
                    .Navigation();               

    }
}

以上是ARouter依赖注入的功能表现。当然不仅仅限于Activity,也可以是Fragment。

 

那么是如何实现的呢?

下面这个类是ARouter根据注解自动生成的类。

public class SecondActivity$$ARouter$$Autowired implements ISyringe {
  private SerializationService serializationService;

  @Override
  public void inject(Object target) {
    serializationService = ARouter.getInstance().navigation(SerializationService.class);
    SecondActivitysubstitute = (SecondActivity)target;
    substitute.testInt = substitute.getIntent().getIntExtra("testInt", substitute.testInt);
    substitute.testString = substitute.getIntent().getStringExtra("testString");
  }
}

再来看一下ARouter.inject(this)最后调用的是什么。最后调用的就是上面SecondActivity$$ARouter$$Autowired类的inject方法。inject()里面的就是我们平时常用的方式。

    static void inject(Object thiz) {
        AutowiredService autowiredService = ((AutowiredService) ARouter.getInstance().build("/arouter/service/autowired").navigation());
        if (null != autowiredService) {
            autowiredService.autowire(thiz);
        }
    }

这个有一个坑要说一下,由于赋值是依赖intent的,而在onNewIntent回来的时候,并没有intent, 导致依赖注入失败。原因是没有先setIntent(intent); 然后再调用ARouter.inject(this)就不会有问题。

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);

        setIntent(intent);
        
        ARouter.inject(this);
    }

像上面那样使用就可以了。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARouter(七) 依赖注入 的相关文章

  • SQL基本的表修改及其它命令

    对于已经建好的表 有时可能因为业务的变动或者设计时考虑的不周全而需要进行列的调整 包 括增加一个新的列 修改一个列 为列定义一个缺省值 删除一个列等 对应语句语法分别如下 ALTER TABLE table ADD column datat
  • pytorch中一维卷积conv1d,参数含义,为何转置

    pytorch中一维卷积conv1d 参数含义 为何转置 在Pytorch中 一维卷积是一种非常常用的运算 但是对于刚刚入门的新手 了解此函数的用法仍是一个比较费力的挑战 本文简单介绍一下此函数的常用参数的意义以及此函数的用法 链接 cov
  • Node.js 利用高阶函数 ( 柯里化 ) 并发写入流、读取流(Stream)

    首先 介绍Stream实例对象的方法 data 读数据时触发 end 数据读取完毕时触发 error 在接收和写入过程中发生错误时触发 finish 所有数据已被写入到底层系统时触发 今天 我们利用node对stream对象的支持 利用高阶
  • 在Windows下使用Anaconda安装TesnsorFlow 2.x

    作者 弗拉德 来源 弗拉德 公众号 fulade me 下载 Anaconda 首先打开Anaconda官网找到网页底部 由于最新的Anaconda支持Python3 8版本 而TesnorFlow最高支持到Python3 7 我特意查了一
  • java.lang.IllegalStateException: Failed to load ApplicationContext

    问题描述 mvn clean install的时候报的如下异常 紧接着又往下翻了一下日志还有一个这个错误 按正常来说通过 可以取pom当中的properties标签的值呀 但是可以发现编译过后的application当中的值并没有被替换 解
  • 2022年最新版黑马程序员Java学习路线

    工欲善其事 必先利其器 自学Java的同学 必备的自学五部曲 学习路线图 学习教程 工具 书籍 面试 一 Java学习路线图 学习路线图说明 二 学习教程推荐 阶段一Java基础 具备Java语言编程基础和IO 多线程 网络编程等开发能力
  • Zstack 挂载云盘,在Windows下面看不到解决方法

    原因 在使用 Zstack 私有云时 创建 WinServer2019 时 想添加一块数据云盘 但是添加好后 进入系统看不到硬盘 主要是因为添加的云盘驱动是 virtio 格式 所以要安装相关驱动 1 查看挂载的云盘 root zstack
  • 【避坑】minio临时凭证STS实现上传,下载

    一 背景 以minio作为图床 采用用户到minio服务器的点对点使用方式 将上传用户的长期凭证放在客户端 app或者web端 带来极大的风险 通常通过临时凭证STS签名的方式实现 简单的逻辑关系图如下 二 minio服务docker安装
  • Android仿小米商城底部导航栏之二(BottomNavigationBar、ViewPager和Fragment的联动使用)

    简介 在前文 Android仿小米商城底部导航栏 基于BottomNavigationBar 我们使用BottomNavigationBar控件模仿实现了小米商城底部导航栏效果 接下来更进一步的 我们将通过BottomNavigationB
  • Python之爬虫总结

    一 爬虫之requests a 介绍 使用requests可以模拟浏览器的请求 比起之前用到的urllib requests模块的api更加便捷 本质就是封装了urllib3 b 注意 requests发送请求是将网页内容下载来以后 并不会
  • CRMEB Pro版多店版v2.5更新分享

    CRMEB Pro版 v2 4正式发布啦 Pro版系统性能再度提升 并发量可达3w 另外 新增商品设置 积分 金额兑换 订单管理 营销风格 活动背景 活动边框 应用配置引导弹窗等众多新功能 系统升级 1 性能提升 Pro版系统性能再度提升
  • hbase小版本升级

    备份原版本 cd opt hbase cp pr bin bin bak cp pr lib lib bak cp pr hbase webapps hbase webapps bak 停止hbase opt hbase bin stop
  • 前端报403错误的可能原因

    1 跨域问题 2 请求服务器路径问题
  • Java 单元测试_JUnit 框架

    1 单元测试简介 单元测试就是针对最小的功能单元编写测试代码 Java程序最小的功能单元是方法 因此 对Java程序进行单元测试就是针对单个Java方法的测试 1 1 JUnit JUnit 是一套测试框架 JUnit是一个开源的Java语
  • UE4_蓝图室内功能交互

    玩家角色移动 玩家旋转 点击开关门效果 方式二 优化完整版开关门效果 点击开关灯效果 键盘开关灯效果及更改颜色 进入区域开关灯效果 电视播放视频 效果一 单击鼠标播放电视视频 创建MediaPlayer的方法 播放效果3 完整版 窗帘打开和
  • java中文转unicode码

    http open weibo com wiki index php Location get addr转载地址 http www iteye com topic 471901 http blog csdn net zhengjianqi
  • Ubuntu20.0.0安装docker容器

    一 Docker介绍 Docker 是一个开源的应用容器引擎 基于 Go 语言 并遵从 Apache2 0 协议开源 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级 可移植的容器中 然后发布到任何流行的 Linux 机器上
  • 用友出纳通服务器修改系统日期,用友T3软件出纳通里面如何修改账户的建账日...

    用友T3软件出纳通里面如何修改账户的建账日以下文字资料是由 历史新知网www lishixinzhi com 小编为大家搜集整理后发布的内容 让我们赶快一起来看一下吧 用友T3软件出纳通里面如何修改账户的建账日 启用之后就无法修改了 除非你
  • 大众点评数据

    数据名称 大众点评POI数据 数据年份 2022最新版 数据量 4000w 数据范围 全国范围 数据变量 id 店铺id 店铺名称 店铺位置 店铺区县 店铺商圈 小类 大类 城市id 城市名 是否外卖 均价 人气 分数 星级 状态 电话 位
  • CMake + VTK

    编译VTK本身没有太多的坑 我使用的是VS2015 x64 Native Tools Command Prompt 基本上就是典型的 cmake G Visual Studio 14 Win64 即可 使用编译后的结果时主要是要注意VTK

随机推荐

  • 数据库入门书籍推荐

    数据库入门书籍推荐 书籍书籍 数据库系统概论 内容简介 数据库理论入门必读 本书系统全面的阐述了数据库系统的基础理论 基本技术和基本方法 我国第一部系统阐述数据库原理 技术和方法的教材 适时反映数据库领域的新成果和应用新方向 内容丰富 概念
  • QLineEdit的信号与槽用法

    QLineEdit一共有6个信号函数 并不多 很好理解 1 void cursorPositionChanged intold intnew 当鼠标移动时发出此信号 old为先前的位置 new为新位置 在文本框中输入一个字符 光标移动一格
  • 封神台靶场-第四章

    第四章 为了更多的权限 Tips 1 存储型Xss 2 flag在cookie里 格式为zkz xss bot 每10秒访问一次页面 3 自建Xss平台源码 http www zkaq org t 99 html 登陆后根据提示要进行存储型
  • 程序性能

    文章目录 1 程序性能 1 1 空间效率 1 2 时间效率 1 3 f n 程序性能表示 程序性能包括两个部分 空间效率和时间效率 1 程序性能 1 1 空间效率 一个运行的程序所占用的内存 1 栈 函数调用时操作系统自动分配的内存 函数调
  • commitlint配置

    聊一下如何配置commit lint 其实这个问题一直困扰我很久 看了好多文章 都无济于事今天狠下心来终于解决 废话不多说 先上代码 最后阐述原因 因为有的小伙伴就是想找到解决问题办法 至于原因不太关心 注意 npm 版本大于 7 安装 h
  • 网站服务器被攻击的形式,服务器被攻击的不同表现类型以及应对策略

    服务器被攻击的不同表现类型以及应对策略 许多网站站长都遇到过网络服务器被攻击的状况 被攻击之后也大多数都只有束手待毙 由于大伙儿广泛对攻击不足掌握 很多人把多很多的攻击和防御力挂在嘴上 却压根不清楚网络服务器是怎么被攻击的 更不要说怎样应对
  • MyBatis-Plus-自定义模板-生成代码

    MyBatis Plus代码生成器所需jar包
  • windows无法访问FTP服务器的各种报错解决

    本文转载自windows无法访问FTP服务器的各种报错解决 对于windows无法访问FTP服务 原因有很多 但首先要保证 你的服务配置无误 用户有访问资源的权限 防火墙拦截 服务器防火墙通行了 忽略了客户端的防火墙可不行 对于不信任的连接
  • special effects - 樱花飘落背景特效

    樱花飘落背景特效 一 效果图 二 实现代码 一 效果图 二 实现代码
  • VPS是虚拟专用服务器,部署VPS包括以下步骤

    VPS是虚拟专用服务器 部署VPS包括以下步骤 购买VPS主机 选择可靠的云服务提供商 如亚马逊AWS 谷歌云 腾讯云或阿里云 并注册账户和创建VPS实例 为了确保您的应用程序在运行过程中具有快速的性能和可靠的服务级别协议 请评估不同主机计
  • Intel TBB简介及在Windows7 VS2013上源码的编译过程

    Intel TBB Intel Threading Building Blocks 是Intel线程构建块开源库 它的License是Apache 2 0 Intel TBB是一种用于并行编程的基于C 语言的框架 它是一套C 模板库 它提供
  • 【http协议】超详细介绍

    文章目录 一 协议 1 1 Method 1 1 1 HEAD 1 2 Status 1 3 Http Head Http 头 1 3 1 Http Request Body 1 3 1 1 Content Type 1 3 1 2 miu
  • 浅谈Web用户体验(二)

    在所有网页或浏览器的GUI中我最喜欢的是google的用户体验效果 平时我们只把它作为搜索工具 从没仔细欣赏过它的设计细节 有篇博客对google的用户体验总结的非常好 google的设计一向以简单著称 让页面清爽优雅地呈现 一方面减少页面
  • Notepad++找回缓存的内容

    场景 在使用Notepad 的时候 有一个非常方便的自动保存功能 也就是你在新建一个文档后 输入你的内容 在你没有手动保存前 Notepad 会帮你保存当前内容 当你没有保存就退出Notepad 下次进来Notepad 会自动把你上次编辑的
  • 图像处理之三角法图像二值化

    图像处理之三角法图像二值化 三角法求阈值最早见于Zack的论文 Automatic measurement of sister chromatid exchange frequency 主要是用于染色体的研究 该方法是使用直方图数据 基于纯
  • mybatis常见的报错点总结

    1 invalid comparison java util Date and java lang String 错误代码 正确代码 错误原因 将日期格式和字符串进行了比较 2 NumberFormatException 错误代码 正确代码
  • IDEA项目编写到一半 突然Install报错Cannot resolve org.apache.maven.plugins:maven-compiler-plugin:X.X.X

    描述 是一次很蛇皮的踩坑经历 原因很简单 但是太容易中招了 简单记录一下 项目没有做热部署 添加完一个CRUD的接口后 重启项目测试 突然就报错了 mvn clear install也没用 Cannot resolve org apache
  • 笔试真题解析

    恭喜发现宝藏 搜索公众号 TechGuide 回复公司名 解锁更多新鲜好文和互联网大厂的笔经面经 作者 TechGuide 全网同名 订阅专栏 进阶版 2023最新大厂笔试真题 题解 不容错过的宝藏资源 第一题 服务器能耗统计 100分 题
  • Fine BI、Smart BI、永洪BI、瓴羊Quick BI这些国产BI工具,都擅长哪些功能?

    近几年 随着国内大数据的火热 商业智能BI工具市场也迎来了大爆发 市面上涌现出了各种各样的BI工具 让很多企业在选择BI工具的时候遇上了 选择困难症 在最初 大多数企业都会选择Tableau 微软Power BI等外国公司的BI工具 然而
  • ARouter(七) 依赖注入

    当你从FirstActivity跳到SecondActivity 有时需要把参数值放在intent里面传过去 ARouter的依赖注入会帮你在SecondActivity里面的属性直接赋好参数值 当然需要你事先在SecondActivity