【发布时间】:2017-03-25 17:44:01
【问题描述】:
来自匕首模块:
@Provides @PerMediaSession @Nullable
MediaControllerCompat provideMediaController(Context appContext, MediaSessionCompat mediaSessionCompat) {
try {
return new MediaControllerCompat(appContext, mediaSessionCompat.getSessionToken());
} catch (RemoteException e) {
e.printStackTrace();
return null;
}
}
我注射的地方
class PlayerPresenter
@Inject constructor(val fileManager: FileManager,
@Nullable val mediaController: MediaControllerCompat?) : PlayerContract.Presenter { <...>
我得到以下编译错误
Error:(15, 10) error: android.support.v4.media.session.MediaControllerCompat is not nullable,
but is being provided by @Provides @...di.PerMediaSession @android.support.annotation.Nullable android.support.v4.media.session.MediaControllerCompat
...di.MediaSessionModule.provideMediaController$app_debug(android.content.Context, android.support.v4.media.session.MediaSessionCompat)
at: <...where it is injected...>
我尝试将 dagger 模块转换为 Kotlin,这种情况下 Dagger 看到 Jetbrains @Nullable 注释,但由于某种原因在构造函数类中没有看到注释。
我使用 Dagger 2.9
【问题讨论】:
-
你使用的是哪个 Dagger 库?你在用 kapt 吗?
-
编译 "com.google.dagger:dagger:$rootProject.daggerVersion" kapt "com.google.dagger:dagger-compiler:$rootProject.daggerVersion" 版本是 2.9