# Router **Repository Path**: mirrors_qstumn/Router ## Basic Information - **Project Name**: Router - **Description**: kotlin编写的Android路由导航库 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-31 - **Last Updated**: 2026-03-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Router 纯kotlin编写的Android路由导航库 ## how to use: ### 1. 初始化路由 ```kotlin Router.init(application, { path -> when (path) { "/route/second" -> Route(SecondActivity::class.java) else -> null } }) ``` ### 2. 导航 ```kotlin Navigator.with(activity).path("/route/second").push() findNavigator().path("/route/second").push() //携带参数 findNavigator().path("/route/second").param("id", 100).push() findNavigator().path("/route/second").params(User()).push() //获取参数 class SecondActivity : AppCompatActivity() { private val id by navParams("id", default = -1) private val user by navParams() } ``` ### 3. 回退 ```kotlin findNavigator().pop() //携带返回值 findNavigator().pop("value") //获取返回值有2种方式 //方式1 如上个页面此期间在后台被回收, 则该处监听会无效 findNavigator().path("/route/second").push { result -> ...} //方式2 调用registerForNavigatorResult扩展函数预注册返回结果监听, 任何情况下都有效 class FirstActivity : AppCompatActivity() { private val resultRegister = registerForNavigatorResult { result -> ...} findNavigator().path("/route/second").push(resultRegister) } ``` ### 4. 常用API #### 4.1 拦截器 ```kotlin //全局拦截器 Router.init(application, {...}, interceptor = { route, params, next -> val path = route.path val target = route.target //如无需拦截需主动调用next继续后续流程 next() }) //路由拦截器, 只针对该路由地址有效 "/route/second" -> Route(SecondActivity::class.java, interceptor = { route, params, next -> ...}) ``` #### 4.2 路由创建器 ```kotlin Router.addRouteGenerator { path -> when (path) { "/route/second" -> Route(SecondActivity::class.java) else -> null } } ``` #### 4.3 ActivityOptions ```kotlin findNavigator().path("/route/second").activityOptions(...).push() findNavigator().path("/route/second").cast().activityOptions(...).push() ``` #### 4.4 单Activity的Fragment之间导航暂未支持, 可自行继承FragmentTargetNavigator后通过NavigatorEngine实现 ### 5. 依赖 ```groovy maven { url 'https://jitpack.io' } implementation 'com.github.qstumn:Router:$release' ```