私はRetrofitインターフェイスを提供するモジュールを持っています。Dagger2はnullableにアクセスできません。 javax.annotation.Nullableが見つかりません
@Module
class NetModule(val base: String) {
@Provides
@Singleton
fun provideOkHttpClient(): OkHttpClient {
return OkHttpClient.Builder()
.addInterceptor(object: Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
info("Request for ${request.url()}")
return chain.proceed(request)
}
}).build()
}
@Provides
@Singleton
fun provideGson(): Gson {
return GsonBuilder()
.enableComplexMapKeySerialization()
.serializeNulls()
.setPrettyPrinting()
.setLenient()
.create()
}
@Provides
@Singleton
fun provideRetrofit(OkHttpClient: OkHttpClient, Gson: Gson): Retrofit {
return Retrofit.Builder()
.baseUrl(base)
.client(OkHttpClient)
.addConverterFactory(GsonConverterFactory.create(Gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.createAsync())
.build()
}
@Provides
@Singleton
fun provideIdService(Retrofit: Retrofit): IdService {
return Retrofit.create(IdService::class.java)
}
}
はNetModule
は、アプリケーションに注入し、アプリケーションのコンパニオン・オブジェクトに格納されNetComponent
@Singleton
@Component(modules = arrayOf(NetModule::class))
interface NetComponent {
fun inject(application: Application)
fun inject(activity: Activity)
}
と共に使用されます。活動に
netComponent = DaggerNetComponent.builder().netModule(NetModule("some_url")).build()
netComponent.inject(this)
私はその後
@Inject lateinit var idService: IdService
を持っているこれは
IdService
が@Providesまたは@Producesアノテーション付きメソッドなしで提供することができないビルドエラーが発生します。
私が代わりにRetrofit
インスタンスを注入しようとすると、私は
のNullableにアクセスすることはできません。別のエラーを取得するには、スタックトレースが見つからないjavax.annotation.Nullableのクラスファイルを示し
このエラーを参照しているものは見つかりませんでした。 12時間前から同じエラーが発生しているようだが、削除されたStackOverflow投稿があります。
https://stackoverflow.com/questions/44983292/cannot-access-nullable-on-injecting-with-dagger2-in-kotlin
をあなたには、いくつかのより多くのエラーの詳細を追加してくださいすることができます。 – guenhter
この解決策をお探しですか? – dazza5000
私はあまり書いていないので、私は空白の新しいプロジェクトを作成したと思います。このプロジェクトはhttps://github.com/tpb1908/HNKotlin/tree/master/app/src/main/java/com/tpb/hnk/dagger –