Android Kotlin項(xiàng)目集成阿里ARouter

Arouter 是一個(gè)用于幫助 Android App 進(jìn)行組件化改造的框架 —— 支持模塊間的路由、通信、解耦,[Arouter Github地址](https://github.com/alibaba/ARouter),是項(xiàng)目進(jìn)行組件化開發(fā)的神器,今天來講一下ARouter怎么在Kotlin項(xiàng)目中進(jìn)行使用

###第一步,項(xiàng)目需要集成Kotlin插件

? ? apply plugin: 'kotlin-android'

? ? apply plugin: 'kotlin-android-extensions'

? ? apply plugin: 'kotlin-kapt'

前面兩個(gè)插件做過Kotlin的小伙伴應(yīng)該都很熟悉,后面這個(gè)插件是干什么用的呢?

KAPT是Annotation Processing for Kotlin 的縮寫形式,Kotlin的注解處理,詳細(xì)的可以看這篇文章[KAPT(Annotation Processing for Kotlin)是什么](http://www.itdecent.cn/p/8c3437006e79) 就如Java Android項(xiàng)目的 annotationProcessor

**第二步,添加依賴**

? ? dependencies {

? ? ? ? ? implementation 'com.alibaba:arouter-api:1.5.0'

? ? ? kapt 'com.alibaba:arouter-compiler:1.2.2'

? ? }


? ? ? ? defaultConfig {



? ? ? ? ? ? kapt {

? ? ? ? ? ? ? ? arguments {

? ? ? ? ? ? ? ? ? ? arg("AROUTER_MODULE_NAME", project.getName())

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

**使用方法**

Activity的使用方法

定義Activity

? ? @Route(path = "/haifengdemo/login")

? ? class LoginActivity : AppCompatActivity() {


? ? ? ? override fun onCreate(savedInstanceState: Bundle?) {

? ? ? ? ? ? super.onCreate(savedInstanceState)

? ? ? ? ? ? setContentView(R.layout.activity_login)

? ? ? ? }

? ? }

Activity跳轉(zhuǎn)

? ? ? ARouter.getInstance().build("/haifengdemo/login").navigation()

Fragment的使用方法

定義Fragment

? ? @Route(path = "/haifengdemo/test_fragment")

? ? class TestFragment :Fragment(){

? ? ? ? override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

? ? ? ? ? ? super.onCreateView(inflater, container, savedInstanceState)

? ? ? ? ? ? val? test: Int? = arguments?.getInt("xxxx")

? ? ? ? ? ? val? test2:String? = arguments?.getString("xxx")

? ? ? ? ? ? return? layoutInflater.inflate(R.layout.fragment_test,null)



? ? ? ? }

? ? }

Fragment跳轉(zhuǎn)

? ? ? val? fragment:Fragment= ARouter.getInstance().build("/haifengdemo/test_fragment") .navigation() as Fragment



? ? ? ? ? ? ? ? val? bundle =Bundle()

? ? ? ? ? ? ? ? bundle.putInt("test",123)

? ? ? ? ? ? ? ? fragment.arguments=bundle


? ? ? ? ? ? ? ? supportFragmentManager.beginTransaction().replace(R.id.content,fragment).commitAllowingStateLoss()

集成過程中可能會(huì)遇到的問題

問題1,找不kapt

解決方法:原因是由于沒有引入kapt插件,添加插件 kotlin-kapt就可以了

? ? apply plugin: 'kotlin-kapt'

問題2,No module name

解決方法,添加參數(shù)

? ? defaultConfig {



? ? ? ? ? ? kapt {

? ? ? ? ? ? ? ? arguments {

? ? ? ? ? ? ? ? ? ? arg("AROUTER_MODULE_NAME", project.getName())

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容