Android Kotlinプロジェクト統合アリARouter

2695 ワード

ArouterはAndroid Appのコンポーネント化改造を支援するためのフレームワークです.モジュール間のルーティング、通信、デカップリングをサポートします.Arouter Githubアドレスは、プロジェクトのコンポーネント化開発を行う神器です.今日はARouterがKotlinプロジェクトでどのように使用されるかについてお話しします.
最初のステップは、プロジェクトにKotlinプラグインを統合する必要があります.
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

前の2つのプラグインはKotlinを作ったことがある仲間はよく知っているはずですが、後ろのこのプラグインは何に使いますか?
KAPTはAnnotation Processing for Kotlinの略で、Kotlinの注釈処理、詳しくはこの記事を見ることができますKAPT(Annotation Processing for Kotlin)はJava AndroidプロジェクトのannotationProcessorのようなものです
ステップ2依存を追加
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ジャンプ
   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ジャンプ
  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()

統合プロセスで発生する可能性のある問題
質問1、kaptが見つかりません
解決策:kaptプラグインが導入されていないため、プラグインkotlin-kaptを追加すればよい
apply plugin: 'kotlin-kapt'

問題2,No module name
解決方法、パラメータの追加
defaultConfig {
      
       
        kapt {
            arguments {
                arg("AROUTER_MODULE_NAME", project.getName())
            }
        }
    }