Итак, у меня есть этот интерфейс и реализация для навигации по моему приложению. Я пытаюсь ввести это в свою деятельность, я получаю сообщение об ошибке:
kotlin .UninitializedPropertyAccessException: навигатор свойств lateinit не был инициализирован
My активность:
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)
}
}
}
Как я могу ввести эту навигацию и не получить эту ошибку?