1

I trying to create android app with koin in version 2.2.2 and single activity. I use Navigation Component to navigate beetwen fragments. When I try create ViewPager with 3 fragments I get error: ScopeAlreadyCreatedException: Scope with id 'x.x.x.HomeFragment@132452043' is already created.

In my FragmentX i create adapter to viewpager with 3 fragments: Fragment1, Fragment2 and Fragment3.

Below is the code from the module including the adapter and viewmodel.

scope(named<FragmentX>()) {
    factory {
        ViewPagerAdapter(
            ((((get() as ActivityProvider).foregroundActivity) as? FragmentActivity)?.supportFragmentManager!!),
            androidContext()
        )
    }
    viewModel { CommonViewModel() }
}

FragmentX:

private val viewModel: CommonViewModel by viewModel()
private val viewPagerAdapter: ViewPagerAdapter by fragmentScope().inject()

Fragment1, Fragment2, Fragment3:

private val viewModel: HomeViewModel by sharedViewModel()

getItem() method from ViewPagerAdapter:

override fun getItem(position: Int): Fragment {
    return when (position) {
        0 -> Fragment1()
        1 -> Fragment2()
        else -> Fragment3()
    }
}

What am I doing wrong?

  • You can upvote. https://github.com/InsertKoinIO/koin/issues/983 and https://stackoverflow.com/questions/65439079/koin-share-dependencies-scoped-to-nested-graph – timr Mar 14 '21 at 17:33

0 Answers0