【发布时间】:2018-05-11 02:51:29
【问题描述】:
刚接触 kotlin,正在尝试迁移一个用 Java 编写的小型 Android 项目。不知道如何处理这个错误:
原因:java.lang.IllegalStateException:
com.mydomain.example.dagger.BusModule 必须设置
> com.mydomain.example.dagger.DaggerAppComponent$Builder.build(DaggerAppComponent.java:87)
> 在 com.mydomain.example.MyApplication.buildComponent(MyApplication.kt:29)
> 在 com.mydomain.example.MyApplication.onCreate(MyApplication.kt:17)
> 在 android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1118)
>在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:5791)
这是BusModule 类:
@Module
object BusModule {
const val PROVIDER_FRAGMENT_SELECTION = "fragment_selection"
@Provides
@Singleton
@Named(PROVIDER_FRAGMENT_SELECTION)
fun provideNewFragmentSelection(): PublishSubject<String> {
return PublishSubject.create()
}
}
这里是 AppComponent 类:
@Component(modules = [(AppModule::class), (DataModule::class), (BusModule::class)])
@Singleton
interface AppComponent {
@get:Named(BusModule.PROVIDER_FRAGMENT_SELECTION)
val selectedFragmentName: PublishSubject<String>
fun inject(mainActivity: MainActivity)
}
最后是应用程序类:
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
appComponent = buildComponent()
}
private fun buildComponent(): AppComponent {
return DaggerAppComponent.builder().build()
}
companion object {
var appComponent: AppComponent? = null
private set
}
}
无法弄清楚错误消息的含义。 BusModule 怎么没有“设置”?谢谢!
【问题讨论】: