前言

团队分模块开发在大项目上很常见,但项目组A想跳转到一个项目组B负责的Activity,此时若B未创建该Activity,则会影响项目进度,由此,安卓路由跳转出现了

原理

原理比较简单,大家都知道Context.startActivity()这个方法需要传一个Context和需要启动的Activity的Class类,而该方法就是利用运行时根据包名.类名来找到Class对象,然后使用Context.startActivity()来跳转

代码实现

Java,使用了工具类静态方法

public class JumpUtil {/*** 路由跳转** @param context      上下文* @param activityPath 要跳转的类的全包名.类名* @param bundle       要传递的参数*/public static void jump(Context context, String activityPath, Bundle bundle) {if (TextUtils.isEmpty(activityPath))return;try {Intent intent = new Intent(context, Class.forName(activityPath));if (bundle != null)intent.putExtras(bundle);context.startActivity(intent);} catch (ClassNotFoundException e) {e.printStackTrace();}}
}使用
JumpUtil.jump(this, "com.lt.mylibrary.LibraryActivity", null);

Kotlin,使用了扩展方法实现

/*** 路由跳转,使用Context调用即可* @param activityPath 要跳转的类的全包名.类名* @param bundle       要传递的参数*/
fun Context.jump(activityPath: String, bundle: Bundle? = null) {if (TextUtils.isEmpty(activityPath))returntry {startActivity(Intent(this@jump, Class.forName(activityPath)).apply {if (bundle != null)this@apply.putExtras(bundle)})} catch (e: ClassNotFoundException) {e.printStackTrace()}
}Context的子类内使用
jump("com.lt.mylibrary.LibraryActivity")

注意事项

  1. 要跳转的类所在的module必须被主模块或当前模块引用,否则会找不到Class对象
  2. 传入值必须是全包名.对象名,否则找不到Class对象
  3. 可以对包名的String串进行封装,可以降低出错率
  4. 比较规范的命名方式可以减少书写错误
  5. 路由启动Service可以自行扩展

一个方法搞定安卓路由跳转相关推荐

  1. 手机android id修改密码,手机锁屏密码忘了?一个方法搞定

    今天,我们就分几种情况来解决这个难题. 如何清除苹果手机的锁屏密码你有手机注册时的ID和密码: iTunes软件界面 那很好办,如上图,电脑上下载iTunes软件进行恢复出厂即可,这样就可以清除密码. ...

  2. border渐变 ios_iOS一个方法搞定view渐变色

    Demo 使用效果//包含头文件UIView+Gradient.h [self.label setGradientBackgroundWithColors:@[[UIColor redColor],[ ...

  3. 仅一个方法搞定Flutter Http Dio 请求

    首先 pubspec.yaml里面添加dio依赖模块 dio: ^3.0.10 由于 http请求常用的是GET和POST方法, 请求参数格式要么JSON,要么XML, 所以我在第一次封装dio ht ...

  4. 封装一个类搞定90%安卓客户端与服务器端交互

    本实例封装了一个处理安卓客户端与服务器端交互的几个方法,对于中文乱码问题本实例也找到了解决方案.本例可以处理的场景如下: 1.与服务器端交互json数据. 2.Get方式与服务器端交互数据. 3.Po ...

  5. Xposed精品连载 | 一篇文章彻底搞定安卓刷机与Root

    前言 adb与fastboot 开启开发者选项 开启USB调试 Bootloader解锁 如何进入Bootloader模式 刷机 Root 安卓是基于Linux内核的一个移动操作系统.在Linux这种 ...

  6. labview 重新启动后上次_还在为labview保存参数而苦恼吗?看看一个vi搞定全部

    2020labview懒人参数存取-升级版 问题:项目编程过程中,参数存取是无论如何也没法避免的一个环节,因为程序设置完成后,下次再打开时如果要执行上次设置的参数,就需要加载上次保存的参数文件.那么以 ...

  7. php调用jssdk转发_php一个文件搞定微信jssdk配置

    php一个文件搞定微信jssdk配置: 包括缓存,包括https通讯,获取微信access_token,签名什么的都有.但是防范性编程做得比较少,商业用的话,需要完善下代码. 使用姿势 ^ajax(C ...

  8. 通用人工智能最新突破!一个Transformer搞定一切

    Datawhale干货 编辑:梦晨 鱼羊,来源:量子位 通用人工智能,还得看DeepMind. 这回,只一个模型,使用相同的权重,不仅把看家本领雅达利游戏玩得飞起. 和人类聊聊天.看图写话也不在话下. ...

  9. 计算机怎么用函数计算销售额排名,用Excel算TOP项销售额占比?一个公式搞定所有!...

    原标题:用Excel算TOP项销售额占比?一个公式搞定所有! 作者 | 拉登Dony 来源 | 拉小登(id:ladengchupin) 今日目标: 计算Top项销售占比 昨天遇到了一个提问,非常的头 ...

最新文章

  1. HDU 1816, POJ 2723 Get Luffy Out(2-sat)
  2. python3爬虫初探(四)之文件保存
  3. 一款粉笔最近火了 世界各国数学家为什么集体囤粉笔
  4. linux mysql df_Linux基础:df命令总结
  5. NTKO控件安装:“不能装载文档控件,请在检查浏览器的选项中检查浏览器的安全设置”问题
  6. android 极光推送1011,极光推送 · OpenKit使用手册 · 看云
  7. WRF模式运行及相关问题的解决
  8. 科普|掀开马甲包的 “神秘面纱”
  9. 蓝牙键盘 android手机游戏,使用BluetoothHidDevice将安卓手机同时模拟成鼠标和键盘...
  10. linux中 #chmod –R 777 * 是什么意思
  11. Python学习笔记——网络通信过程
  12. 8.7 Meta learning元学习全面理解、MAML、Reptile
  13. 科大奥瑞物理实验——傅里叶光学
  14. 网站域名服务器加密,网站域名利用https防劫持方法
  15. ABAP SE54 视图簇
  16. (邱维声)高等代数课程笔记:行列式的性质
  17. python下载钉钉api_DingTalk SDK for Python
  18. HTTP调试工具:Fiddler介绍
  19. 创业文章:长风破浪会有时
  20. AIX7.1 编译igen错误,第三方xml parse lib load error

热门文章

  1. Python爬虫应用实战案例-jsonpath在爬虫中的应用,爬取照片信息
  2. 数据仓库建设从0到1-一文带你深入建设金融数仓体系
  3. 从C语言的角度重构数据结构系列(十二)-C语言判断语法详解(ifswitch)
  4. tensorflow2中如何设置GPU的使用
  5. Hessian 原理分析--转
  6. spark源码解析之基本概念
  7. hadoop命令帮助
  8. Jackson学习二之集合类对象与JSON互相转化--转载
  9. jquery学习手记(8)遍历
  10. Newton-Raphson method