私はAndroidアプリケーションにHasActivityInjectorを実装しようとしましたが、HasActivityInjectorを解決できないことを示しています。依存関係の下私のプロジェクトで使用したプラグイン-
apply plugin: 'kotlin-kapt'
そして
implementation 'com.google.dagger:dagger:2.16'
kapt 'com.google.dagger:dagger-compiler:2.16'
これが私が試しているコードです-
class RanoBoilerplateApplication : Application(), HasActivityInjector{
@Inject
lateinit var activityDispatchingAndroidInjector:
DispatchingAndroidInjector<Activity>
override fun onCreate() {
super.onCreate()
DaggerAppComponent.builder()
.application(this)
.build()
.inject(this)
}
override fun activityInjector(): AndroidInjector<Activity> =
activityDispatchingAndroidInjector
}
私はそれを動作させるために含める必要がある他の依存関係を知りません。誰かがこれを以前に行ったことがある場合は私を助けてください。
最新のDagger 2バージョン here を見つけます。
ハッピーコーディング:-)
2.24
へのアップデート後に誰かがここに来た場合、これは削除されました: https://github.com/google/dagger/commit/3bd8f707cb28fd0c5f3abb4f87658566f8b52c1 。
代わりにHasAndroidInjector
を使用できます。
答えるのはかなり遅いですが、短剣の世界が初めての人には役立つかもしれません!
アプリケーションクラスでHasActivityInjector、HasServiceInjectorなどの複数のDaggerインターフェイスを実装する定型を回避するために、HasAndroidInjectorに置き換えられました。これで、以下のようにHasAndroidInjectorを実装するだけで済みます。
class DaggerExampleApplication : Application(), HasAndroidInjector{
@Inject lateinit var androidInjector : DispatchingAndroidInjector<Any>
override fun androidInjector(): AndroidInjector<Any> = androidInjector
override fun onCreate() {
super.onCreate()
//Your code
}
}
私の依存関係は次のようになります:
//Dagger
implementation "com.google.dagger:dagger:${libs.dagger}"
implementation "com.google.dagger:dagger-Android:${libs.dagger}"
implementation "com.google.dagger:dagger-Android-support:${libs.dagger}"
kapt "com.google.dagger:dagger-compiler:${libs.dagger}"
kapt "com.google.dagger:dagger-Android-processor:${libs.dagger}"
Appcompatを使用している場合は、support
が必要です。そしてその ${libs.dagger}
は、必要な短剣バージョン(2.16など)を指します。依存関係の詳細 こちら を読んでください。
@mbonninと@Subhanの回答に加えて、バージョン2.24以降、Has{Activity,Fragment,Service,ContentProvider,BroadcastReceiver}
が削除されました。この古い実装を引き続きサポートする場合は、HasAndroidInjector
とHas{Activity,Fragment,Service,ContentProvider,BroadcastReceiver}
の両方をサポートするバージョン2.23を使用してください。
これは、バージョン2.24のようになります。
応用
class ExampleApp: Application(), HasAndroidInjector {
@Inject
lateinit var androidInjector: DispatchingAndroidInjector<Any>
override fun androidInjector(): AndroidInjector<Any> = androidInjector
/..../
アクティビティ
class ExampleActivity: AppCompatActivity(), HasAndroidInjector {
@Inject
lateinit var androidInjector: DispatchingAndroidInjector<Any>
override fun androidInjector(): AndroidInjector<Any> = androidInjector
/..../
断片
class MoreFragment: Fragment(), HasAndroidInjector {
@Inject
lateinit var androidInjector: DispatchingAndroidInjector<Any>
override fun androidInjector(): AndroidInjector<Any> = androidInjector
/..../
HasActivityInjector
が新しいdaggerに導入されましたAndroidサポートモジュール。以下の依存関係をbuild.gradleファイルに含めます。
kapt "com.google.dagger:dagger-Android-processor:2.18"
implementation "com.google.dagger:dagger-Android-support:2.18"