前言
主要是对ARouter封装使用,只做了简单的封装处理,使用了扩展函数,方便使用,减少重复代码,提高效率。
方法列表
- PostCard扩展函数
pretreatment :预处理方法,原ARouter中的实现,不过舍弃了拦截器和自定义callback
buildIntent :生成可跳转带参数的 intent
navigateForResult :带回调的跳转
- RouterKtx扩展函数
startActivityA :普通的跳转
startActivityForResultA :回调跳转
导入依赖
maven { url 'https://www.jitpack.io' }
implementation 'com.gitee.quetzalcoatl.ActivityResultApi:arouter:0.0.4'
kapt 'com.alibaba:arouter-compiler:1.5.2'
同时在 gradle 中还要加入:
id 'kotlin-kapt'
kapt {
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
不明白可以滑到底部查看项目地址,里面有导入和使用 demo,加入导入后报错,可以试试在project 的gradle.properties 中加入
android.useAndroidX=true
android.enableJetifier=true
使用详情
1. PostCard 使用介绍
首先是 PostCard 的使用,这个没有 RouterKtx 用起来方便,不过还是简单介绍一下
,在 Activitiy/Fragment 中都是调用navigateForResult这个方法,参数和阿里路由传参方法一样,示例如下:
ARouter.getInstance().build(RouterPage.ROUTER_ONE)
.withString("key","keykeykey")
.navigateForResult(this,99){requestCode, resultCode, data ->
Log.e(TAG, ": $requestCode --- $resultCode ---${data?.getStringExtra("result")}" );
}
2. RouterKtx 使用介绍
- 无参普通跳转
startActivityA(RouterPage.ROUTER_TWO)
- 使用 Bundle 传参跳转
val bundle = Bundle()
bundle.putString("key","这是 bundle 传值")
startActivityA(RouterPage.ROUTER_ONE,bundle)
- 使用 Pair 传参跳转
startActivityA(RouterPage.ROUTER_ONE,"key" to "这是 pair 传值", "key2" to 88)
- 无参回调跳转
startActivityForResultA(RouterPage.ROUTER_ONE){resultCode,data->
Log.e(TAG, ": --- $resultCode ---${data?.getStringExtra("result")}" );
}
- Bundler 传参回调跳转
val bundle = Bundle()
bundle.putString("key","这是 bundle 传值")
startActivityForResultA(RouterPage.ROUTER_ONE,bundle){resultCode,data->
Log.e(TAG, ": --- $resultCode ---${data?.getStringExtra("result")}" );
}
- Pari 传参回调跳转
startActivityForResultA(RouterPage.ROUTER_ONE,
"key" to "这是 pair 传值", "key2" to 88){resultCode,data->
Log.e(TAG, ": --- $resultCode ---${data?.getStringExtra("result")}" );
}