У меня есть koin modoule, которые обычно работают. но иногда он получает cra sh (обычно, когда я получаю взад-вперед от моего фрагмента) с этой ошибкой:
Caused by: org.koin.core.error.NoBeanDefFoundException: No definition found for 'com.daytwo.NewSearch.ViewModels.SearchViewModel' has been found. Check your module definitions.
происходит, когда я пытаюсь что-то сделать с моей viewModel. Я буду рад, если у кого-нибудь есть предложения
соответствующая часть из моего фрагмента:
var scope : Scope? = getKoin().getOrCreateScope(mainScopeId, named("SearchFragmentScope"))
var preferenceScope = getKoin().getOrCreateScope(prepScopeId + "pref", named("PreferenceScope"))
val searchViewModel : SearchViewModel by scope?.inject{ parametersOf(preferenceScope.id, openForm, searchTabs) }
private fun initSearchView(){
searchViewModel.liveDataShowXButton.observe(viewLifecycleOwner, Observer {
search_clear_x_button.visibility = it.isInvisible()
})
}
module.kt
val NewSearchModule = module {
single{
HighScoreFilter()
}
scope(named("SearchFragmentScope")) {
scoped { SearchRepository() }
viewModel { (preferenceScopeId : ScopeID, openFrom : SearchOpenFrom, tabList : List<SearchTabEnum>) ->
get<SearchRepository>().tabList = tabList
getScope(preferenceScopeId).get<PreferenceRepository>().tabList = tabList
SearchViewModel(get(), getScope(preferenceScopeId).get(), openFrom)
}
viewModel { (preferenceScopeId : ScopeID, enum: SearchTabEnum, openFrom : SearchOpenFrom) ->
when (enum) {
SearchTabEnum.Restaurants -> RestaurantsSearchResultViewModel(get(), getScope(preferenceScopeId).get(),openFrom)
SearchTabEnum.FoodsAndBrands -> FoodSearchResultViewModel(get(), getScope(preferenceScopeId).get(), openFrom, androidContext())
SearchTabEnum.Meals -> MealsSearchResultViewModel(get(), getScope(preferenceScopeId).get(),openFrom)
SearchTabEnum.Favorites -> FavoriteSearchResultViewModel(get(), getScope(preferenceScopeId).get(),openFrom)
else -> FoodSearchResultViewModel(get(), get(), openFrom, androidContext())
}
}
}
scope(named("PreferenceScope")) {
scoped { PreferenceRepository(get()) }
}
}