前言

主要是对ARouter封装使用,只做了简单的封装处理,使用了扩展函数,方便使用,减少重复代码,提高效率。

方法列表

  • PostCard扩展函数
  1. pretreatment :预处理方法,原ARouter中的实现,不过舍弃了拦截器和自定义callback
  2. buildIntent :生成可跳转带参数的 intent
  3. navigateForResult :带回调的跳转
  • RouterKtx扩展函数
  1. startActivityA :普通的跳转
  2. startActivityForResultA :回调跳转

导入依赖

  1. maven { url 'https://www.jitpack.io' }
  2. implementation 'com.gitee.quetzalcoatl.ActivityResultApi:arouter:0.0.4'
  3. kapt 'com.alibaba:arouter-compiler:1.5.2'

同时在 gradle 中还要加入:

  1. id 'kotlin-kapt'
  2. kapt {
  3. arguments {
  4. arg("AROUTER_MODULE_NAME", project.getName())
  5. }
  6. }

不明白可以滑到底部查看项目地址,里面有导入和使用 demo,加入导入后报错,可以试试在project 的gradle.properties 中加入

  1. android.useAndroidX=true
  2. android.enableJetifier=true

使用详情

1. PostCard 使用介绍

首先是 PostCard 的使用,这个没有 RouterKtx 用起来方便,不过还是简单介绍一下
,在 Activitiy/Fragment 中都是调用navigateForResult这个方法,参数和阿里路由传参方法一样,示例如下:

  1. ARouter.getInstance().build(RouterPage.ROUTER_ONE)
  2. .withString("key","keykeykey")
  3. .navigateForResult(this,99){requestCode, resultCode, data ->
  4. Log.e(TAG, ": $requestCode --- $resultCode ---${data?.getStringExtra("result")}" );
  5. }

2. RouterKtx 使用介绍

  1. 无参普通跳转
  1. startActivityA(RouterPage.ROUTER_TWO)
  1. 使用 Bundle 传参跳转
  1. val bundle = Bundle()
  2. bundle.putString("key","这是 bundle 传值")
  3. startActivityA(RouterPage.ROUTER_ONE,bundle)
  1. 使用 Pair 传参跳转
  1. startActivityA(RouterPage.ROUTER_ONE,"key" to "这是 pair 传值", "key2" to 88)
  1. 无参回调跳转
  1. startActivityForResultA(RouterPage.ROUTER_ONE){resultCode,data->
  2. Log.e(TAG, ": --- $resultCode ---${data?.getStringExtra("result")}" );
  3. }
  1. Bundler 传参回调跳转
  1. val bundle = Bundle()
  2. bundle.putString("key","这是 bundle 传值")
  3. startActivityForResultA(RouterPage.ROUTER_ONE,bundle){resultCode,data->
  4. Log.e(TAG, ": --- $resultCode ---${data?.getStringExtra("result")}" );
  5. }
  1. Pari 传参回调跳转
  1. startActivityForResultA(RouterPage.ROUTER_ONE,
  2. "key" to "这是 pair 传值", "key2" to 88){resultCode,data->
  3. Log.e(TAG, ": --- $resultCode ---${data?.getStringExtra("result")}" );
  4. }

地址

项目地址