Search code examples
androidkotlinandroid-fragmentsandroid-recyclerviewandroid-tablayout

How to fix "java.lang.IllegalStateException: Fragment already added" in Android Kotlin


I'm trying to display my RecyclerView into a fragment, which is inside a TabLayout.

I am new to this and don't get what to do for fixing it. While debugging I get:

java.lang.IllegalStateException: Fragment already added.

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val viewPager: ViewPager = findViewById(R.id.view_pager)
        val tabs: TabLayout = findViewById(R.id.tabs)
        viewPager.adapter = SectionsPagerAdapter(this, supportFragmentManager)
        tabs.setupWithViewPager(viewPager)

MainActivity

override fun getItem(position: Int): Fragment {
        return when (position) {
            0 -> FragIn()
            1 -> FragProd()
            2 -> FragShelf()
            else -> FragIn()
        }
    }

getItem()-function in my PagerAdapter


Solution

  • override fun getItem(position: Int): Fragment {
            return when (position) {
                0 -> FragIn()
                1 -> FragProd()
                2 -> FragShelf()
                else -> FragIn()
            }
        }
    

    Just check what is in the method of 'FragIn()', you will get a repeated fragment if there is not a new fragment.