kotlin 中 HasSupportFragmentInjector 的问题 - DispatchingAndroidInjector 为空

Problems with HasSupportFragmentInjector in kotlin - DispatchingAndroidInjector is null

我正在尝试在我的应用程序中实现支持 Dagger 2 的 mvp 模式

对象如下:

class BaseApplication : Application(), HasActivityInjector
{
    override fun onCreate()
    {
        super.onCreate()
        initDi()
    }

    private fun initDi(){

        DaggerAppComponent.builder().application(this).build().inject(this)
    }

    @Inject lateinit var activityInjector: DispatchingAndroidInjector<Activity>

    override fun activityInjector(): AndroidInjector<Activity>
    {
        return activityInjector
    }
}

    @Singleton
    @Component(modules = arrayOf(AndroidInjectionModule::class, AppModule::class, ActivityBuilder::class))
    interface AppComponent
    {
        @Component.Builder
        interface Builder
        {
            @BindsInstance
            fun application(application: Application): Builder

            fun build(): AppComponent
        }

        fun inject(app: BaseApplication)
    }

    @Module
    class AppModule
    {
        @Provides
        @Singleton
        internal fun provideContext(application: Application): Context
        {
            return application
        }
    }

    @Module
    abstract class ActivityBuilder
    {
        @ContributesAndroidInjector(modules = arrayOf(LoginFragmentProvider::class))
        internal abstract fun bindAuthenticationActivity(): AuthenticationActivity
    }

    @Module
    public abstract class LoginFragmentProvider
    {
        @ContributesAndroidInjector
        abstract LoginFragment provideLoginFragmentFactory();
    }

    class AuthenticationActivity : AppCompatActivity(), HasSupportFragmentInjector
    {
        @Inject lateinit var androidInjector: DispatchingAndroidInjector<Fragment>

        override fun supportFragmentInjector(): AndroidInjector<Fragment>
        {
            return androidInjector
          }
    }

    class LoginFragment : Fragment() {

        override fun onAttach(context: Context?)
        {
             AndroidSupportInjection.inject(this)
             super.onAttach(context)
        }

问题是,当登录片段调用 AndroidSupportInjection.inject(this) 时,AuthenticationActivity supportFragmentInjector 被调用,但是androidInjector 仍然是 null

结果,我遇到了异常:

java.lang.RuntimeException: 无法启动 activity .....AuthenticationActivity}: kotlin.UninitializedPropertyAccessException: lateinit 属性 androidInjector 尚未初始化

我不确定如何解决这个问题

提前致谢

我想你忘了注入你的 AuthenticationActivity。您应该在 onCreate.

中调用 AndroidInjection
override fun onCreate(savedInstanceState: Bundle?) {
        AndroidInjection.inject(this)
        super.onCreate(savedInstanceState)
}

编辑:您可以查看我的示例存储库以获取更多信息。 https://github.com/savepopulation/dc-tracker