IllegalStateException: фрагмент уже добавлен: FragmentPagerAdapter - PullRequest
2 голосов
/ 30 марта 2020

Я хочу реализовать навигацию снизу, используя пейджер вида, но мое приложение вылетает, за исключением следующего. Не можете найти точную проблему здесь, может кто-нибудь помочь мне в этом?

java .lang.IllegalStateException: фрагмент уже добавлен: RepositoriesFragment {6b6a2f2} (3aaac6af-92a3-47b c -b3e5-fa3b29ac5d52) id = 0x7f080166 android: переключатель: 2131231078: 0} в androidx.fragment.app.FragmentStore.addFragment (FragmentStore. java: 67) в androidx.fragment.app.FragmentManager (FragManager.adF) . java: 1563) в androidx.fragment.app.BackStackRecord.executeOps (BackStackRecord. java: 405) в androidx.fragment.app.FragmentManager.executeOps (FragmentManager. java: 2167) в androidx.fragment. Приложение 1847) на androidx.fragment.app.FragmentManager $ 4.run (FragmentManager. java: 413) на android .os.Handler.handleCallback (Обработчик. java : 873) в android .os.Handler.dispatchMessage (Обработчик. java: 99) в android .os.Looper.l oop (Looper. java: 201) в android .app .ActivityThread.main (ActivityThread. java: 6823) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 547) at com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 873)

Вот мой HomePagerAdapter, в котором я реализовал: FragmentPagerAdapter

class HomePageAdapter(fragmentManager: FragmentManager) : FragmentPagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {

private val instantiatedFragments: SparseArray<WeakReference<Fragment>> = SparseArray()

companion object {
    const val FRAGMENT_INDEX_REPO = 0
    const val FRAGMENT_INDEX_DEV = 1
    const val NUM_OF_ITEMS = 2
    const val FRAGMENT_DEV_TITLE = "Developers"
    const val FRAGMENT_REPO_TITLE = "Repositories"
}

override fun getItem(position: Int): Fragment {
    return if (position == FRAGMENT_INDEX_REPO) {
        RepositoriesFragment.newInstance()
    } else {
        DevelopersFragment.newInstance()
    }
}

override fun instantiateItem(container: ViewGroup, position: Int): Any {
    val fragment = super.instantiateItem(container, position) as Fragment
    instantiatedFragments.put(
        position,
        WeakReference(fragment)
    )
    return fragment
}

override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
    instantiatedFragments.remove(position)
    super.destroyItem(container, position, obj)
}

override fun getPageTitle(position: Int): CharSequence? {
    return if (position == FRAGMENT_INDEX_REPO) {
        FRAGMENT_REPO_TITLE
    } else {
        FRAGMENT_DEV_TITLE
    }
}

override fun getCount(): Int {
    return NUM_OF_ITEMS
}

}

...