Open mkurom opened 2 years ago
DIの使用例
TodoItemRepositoryImplクラスのコンストラクタでTodoDAOクラスを引数で渡している
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の公式ドキュメントの日本語はバージョンが古いので英語で確認すること※※※
https://blog.mokelab.com/53/android_todo9.html
各アノテーションについて詳しく調べる
by viewModels()でセットするViewModelに@HiltViewModelがついている場合、 対象のフラグメントには@AndroidEntryPointをつける必要がある。
忘れていた場合、単純に引数ありコンストラクタを追加したときと同じRuntimeExceptionが発生する。
https://developer.android.com/training/dependency-injection#kotlin
https://dagger.dev/hilt/
https://developer.android.com/training/dependency-injection/hilt-jetpack?hl=en