Android Kotlinプロジェクト統合アリARouter
ArouterはAndroid Appのコンポーネント化改造を支援するためのフレームワークです.モジュール間のルーティング、通信、デカップリングをサポートします.Arouter Githubアドレスは、プロジェクトのコンポーネント化開発を行う神器です.今日はARouterがKotlinプロジェクトでどのように使用されるかについてお話しします.
最初のステップは、プロジェクトにKotlinプラグインを統合する必要があります.
前の2つのプラグインはKotlinを作ったことがある仲間はよく知っているはずですが、後ろのこのプラグインは何に使いますか?
KAPTはAnnotation Processing for Kotlinの略で、Kotlinの注釈処理、詳しくはこの記事を見ることができますKAPT(Annotation Processing for Kotlin)はJava AndroidプロジェクトのannotationProcessorのようなものです
ステップ2依存を追加
使用方法
Activityの使い方
Activityの定義
Activityジャンプ
Fragmentの使い方
Fragmentの定義
Fragmentジャンプ
統合プロセスで発生する可能性のある問題
質問1、kaptが見つかりません
解決策:kaptプラグインが導入されていないため、プラグインkotlin-kaptを追加すればよい
問題2,No module name
解決方法、パラメータの追加
最初のステップは、プロジェクトに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())
}
}
}