mkurom / Kotlin_sampleApp

Kotlin勉強用
1 stars 0 forks source link

DIメモ #40

Open mkurom opened 2 years ago

mkurom commented 2 years ago

https://developer.android.com/training/dependency-injection#kotlin

https://dagger.dev/hilt/

https://developer.android.com/training/dependency-injection/hilt-jetpack?hl=en

mkurom commented 2 years ago

DIの使用例

TodoItemRepositoryImplクラスのコンストラクタでTodoDAOクラスを引数で渡している

mkurom commented 2 years ago

AndroidでDIはHiltが該当する

使用するためには

@HiltAndroidAppアノテーションをつけて Applicationクラスを継承したクラスを作成。

AndroidManifest.xmlに上記で作成した、クラスをaplicationのnameに設定する。 例) <application ... android:theme="@style/AppTheme" android:name=".ToDoApplication"> ←追加 ...

●DIする側 @AndroidEntryPointアノテーションをActivityやFragmentに追加する。 -> Hiltが依存関係を調べて、注入してくれる。

●DIされる側 @Injectアノテーションを追加して、コンストラクタでDIする。

※※※Hlitの公式ドキュメントの日本語はバージョンが古いので英語で確認すること※※※

mkurom commented 2 years ago

https://blog.mokelab.com/53/android_todo9.html

各アノテーションについて詳しく調べる

mkurom commented 2 years ago

by viewModels()でセットするViewModelに@HiltViewModelがついている場合、 対象のフラグメントには@AndroidEntryPointをつける必要がある。

忘れていた場合、単純に引数ありコンストラクタを追加したときと同じRuntimeExceptionが発生する。