@Inject错误:lateinit属性导航器尚未初始化

时间:2020-06-17 13:34:05

标签: android kotlin dagger-2 dagger

因此,对于应用程序导航,我具有此接口和实现。我正在尝试将其注入我的活动中,但出现错误:

kotlin.UninitializedPropertyAccessException:lateinit属性 导航器尚未初始化

我的活动:

class HomeActivity : AppCompatActivity(), Injectable {

    @Inject
    lateinit var navigator: Navigator

    private lateinit var binding: HomeActivityBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = HomeActivityBinding.inflate(layoutInflater)
        val view = binding.root
        navigator.initWith(binding.homeNavigation, supportFragmentManager)
        setContentView(view)
    }
}

我的导航模块:

@Module
internal abstract class NavigationModule {

    @[Binds Reusable]
    abstract fun bindNav(appNav: AppNav): Navigator
}

应用程序组件:

@Singleton
@Component(
    modules = [
        AndroidInjectionModule::class,
        ContextModule::class,
        PresentationModule::class,
        NavigationModule::class,
        ActivityModule::class
    ]
)
interface ApplicationComponent {
    @Component.Builder
    interface Builder {

        @BindsInstance
        fun application(application: Application): Builder

        fun build(): ApplicationComponent
    }

    fun inject(myApplication: MyApplication)
}

我的导航班:

class AppNav @Inject constructor() :
    Navigator {

        override fun initWith(
        navView: NavigationView,
        fragmentManager: FragmentManager
    ) {
        this.navView = navView
        this.navView.setNavigationItemSelectedListener { menuItem ->
            navigationItemSelected(menuItem)
        }
    }
}

我如何注入此导航而不会出现此错误?

0 个答案:

没有答案