因此,对于应用程序导航,我具有此接口和实现。我正在尝试将其注入我的活动中,但出现错误:
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)
}
}
}
我如何注入此导航而不会出现此错误?