Haskell中的HasSupportFragmentInjector问题 – DispatchingAndroidInjector为null

我试图在我的应用程序中使用匕首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:无法启动活动….. 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