美文网首页
支持kotlin的适合组件化项目使用的路由框架-XRouter

支持kotlin的适合组件化项目使用的路由框架-XRouter

作者: 李云龙_ | 来源:发表于2022-03-11 10:58 被阅读0次

XRouter 是支持 kotlin 的注解处理器的简单的路由框架,在组件化项目中使用可以参考 : https://github.com/dazeGitHub/TestComponentDev3

1. build.gradle 添加依赖
implementation 'com.github.dazeGitHub:XRouter:5.0.5'
annotationProcessor 'com.github.dazeGitHub.XRouter:annotation_compiler:5.0.5'
kapt 'com.github.dazeGitHub.XRouter:annotation_compiler:5.0.5'
2. 使用路由
@Route(key = Constants.RouterPath.MAIN)
class MainActivity : BaseActivity() {
    fun jumpLoginActivity(view: View?) {
//        liveData.postValue("testData2_postValue");
//        startActivity(Intent(this, XRouter.getInstance().getActivity("login/login")))
        XRouter.getInstance().jumpActivity(this,  url = Constants.RouterPath.LOGIN_TEST_PATH,scheme = null)
    }
}

字段自动注入

@Route(key = Constants.RouterPath.LOGIN)
class LoginActivity : BaseActivity() {

    @Autowired("age")
    var age: Int? = null
    @Autowired(value = "username")
    var userNameStr: String? = null
    @Autowired(value = "user")
    var userObj: User? = null
    
    override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_login)
      XRouterKnife.bind(this, IJsonTransferImp())

      "LoginActivity age = $age userNameStr = $userNameStr userObj = $userObj".let{
          TLog.e(TAG,it)
          findViewById<TextView>(R.id.tv_receive_msg).text = it
    }  
}
object Constants {
    val GSON = Gson()
    val JSON_TRANS_IMP = IJsonTransferImp()

    const val ROUTER_SCHEME = "dm://"

    object RouterPath {
        const val MAIN = "main/main"
        const val LOGIN = "login/login"
        const val MEMBER = "member/member"

        const val LOGIN_TEST_PATH = "$ROUTER_SCHEME$LOGIN?age=25&username=zhangsan&user={\"username\":\"lisi\", \"age\":30}"
        const val MEMBER_TEST_PATH = "$ROUTER_SCHEME$MEMBER"
    }
}
class IJsonTransferImp : IJsonTransfer {
    override fun transJson2Obj(json: String?, clazz: Class<*>): Any? {
        return when(clazz){
            User::class.java -> {
                Constants.GSON.fromJson<User>(json, clazz)
            }
            else -> {
                null
            }
        }
    }
}

相关文章

  • 支持kotlin的适合组件化项目使用的路由框架-XRouter

    XRouter 是支持 kotlin 的注解处理器的简单的路由框架,在组件化项目中使用可以参考 : https:/...

  • kotlin完成的项目

    项目是基于kotlin写的: Android 端: 1.使用组件化模块开发基于阿里ARouter封装的组件路由调用...

  • XRouter 一个轻量级的Android路由框架,基于ARou

    XRouter 项目地址 一个轻量级的Android路由框架,基于ARouter上进行改良,优化Fragment的...

  • Android 组件化实践

    组件化MVP+Retrofit+Rxjava,项目使用kotlin,组件间跳转使用Arouter。 首先在项目下新...

  • ARouter 1.5.0

    ARouter 帮助Android App进行组件化改造的框架,支持模块间路由、通信、解耦 支持功能: 支持直接解...

  • ARouter源码解析

    ARouter是阿里巴巴出品,帮助 Android App 进行组件化改造的路由框架,我们项目也使用的是ARout...

  • ARouter 源码分析之 Group 和 Path

    首先我们都知道 ARouter是以路由的方式实现组件间(组件化项目)通讯的的框架。 路由的本质,是映射和寻址,收集...

  • 组件路由:ARouter

    我们知道路由框架主要是为项目组件化服务的 就1个特点: 解耦(配合组件化) 集成步骤:导库全局配置文件 使用到AR...

  • Kotlin总结

    kotlin完成的项目 项目是基于kotlin写的: Android 端: 1.使用组件化模块开发基于阿里ARou...

  • 插件化原理

    比较阿里开源组件化和插件化框架的区别 name模块化开发模块间路由动态加载热修复兼容性问题组件化ARouter支持...

网友评论

      本文标题:支持kotlin的适合组件化项目使用的路由框架-XRouter

      本文链接:https://www.haomeiwen.com/subject/eaucdrtx.html