Kotlin集成Arouter
使用场景
为了软件间的解耦操作,确保模块之间
Activity
的相互跳转不受影响。故引用阿里巴巴的Arouter
。但官网上还没有针对Kotlin
的集成说明,故在此记录下来
如何使用
gradle
配置- 目录配置,常量类配置
- 在
Application
中进行Arouter
初始化 Activity
的配置
1. gradle
配置
注意需要在两个地方进行配置
1.根目录下的build.gradle
中配置,在dependencies
中增加arouter-register
引用
dependencies {
classpath "com.alibaba:arouter-register:1.0.2"
}
复制代码
2.在模块所在的build.gradle
中添加引用及编译配置
plugins {
// 1.增加kotlin-kapt引用
id 'kotlin-kapt'
}
android {
// 2.增加Arouter编译配置,注意顺序。此处应该在android{}中
kapt {
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
}
dependencies {
// 3. 添加gradle引用
implementation 'com.alibaba:arouter-api:1.5.1'
kapt "com.alibaba:arouter-compiler:1.5.1"
}
复制代码
注意:此处的与官网教程不一样。官网的配置是针对java
的,所以我没有使用javaCompileOptions
和annotationProcessor'com.alibaba:arouter-compiler:1.5.1'
这两个配置对kotlin
不生效。
2. 目录配置,常量类配置
新建一个ui
包用于存放需要跳转的Activity
,随后新建一个Constant
的Object
文件。添加Activity
的常量资源
常量类Constants
object Constants {
object Activitys{
const val RECYCLELIST_ACTIVITY = "/ui/RecycleListActivity"
}
}
复制代码
目录结构
3. 在Application
中进行Arouter
初始化
class App : Application() {
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG){
ARouter.openLog()
ARouter.openDebug()
}
ARouter.init(this)
}
override fun onTerminate() {
super.onTerminate()
ARouter.getInstance().destroy()
}
}
复制代码
**注意:**此处有两个小坑。
- 重写的
APP
类需要在Manifest
中进行添加,否则不会执行。(只需要在application
节点中添加name
并指向这个类即可) - 注意
BuildConfig
这个类是引用谁的,因为Arouter
本身也有BuildConfig
。此处需要引用Anroid
的BuildConfig
。博主引用错了后,一直无法跳转。而且也一直没有报错,坑了很久
4. Activity
的配置
以上工作做完后,就可以在需要跳转的Activity
进行配置了。
跳转到的Activity
,增加@Route
注解
@Route(path = Constants.Activitys.RECYCLELIST_ACTIVITY)
class RecycleListActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_recycle_list)
}
}
复制代码
需要进行跳转的Activity
,调用Arouter
单例进行跳转
mBtnList.setOnClickListener {
ARouter.getInstance().build(Constants.Activitys.RECYCLELIST_ACTIVITY).navigation()
}
作者:约束№证
链接:https://juejin.cn/post/6955465825809760286
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。