Michael Gabbay
Michael Gabbay

Reputation: 465

FragmentManager in kotlin not recognized

I want in my application to set A viewPager and pager adapter, but I cant implement it because I cant use fragmentManager. i get the following err:

"Error:(45, 38) Classifier 'FragmentManager' does not have a companion object, and thus must be initialized here"

my code is:

import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager

private lateinit var pagerAdapter: mPagerAdapter
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main2)
    pagerAdapter = mPagerAdapter(FragmentManager) // err is here
    viewPager.adapter = pagerAdapter
  }

class mPagerAdapter(fragmentManager: FragmentManager) :
        FragmentStatePagerAdapter(fragmentManager) {


    // 2
    override fun getItem(position: Int): Fragment {
        when (position) {
            0 -> return Tab1() as Fragment
            1 -> return Tab2() as Fragment
            2 -> return Tab3() as Fragment
        }
        return Tab1() as Fragment
    }

    // 3
    override fun getCount(): Int {
        return 3
    }
}

what should I do to solve this?

Upvotes: 1

Views: 6926

Answers (1)

ianhanniballake
ianhanniballake

Reputation: 200130

FragmentManager is the class name. fragmentManager, with a lowercase 'f', is the property reference to the getFragmentManager() method.

You want to instead use supportFragmentManager (as getFragmentManager() returns the Framework FragmentManager, not the Support Library FragmentManager):

pagerAdapter = mPagerAdapter(supportFragmentManager) 

Upvotes: 5

Related Questions