将TabLayout与片段和ViewPager(kotlin)一起使用

问题描述 投票:0回答:1

我想使用带有viewPager和fragment的选项卡布局,并且我的目标sdk版本是29,并使用anroidx,当我想使用编译'com.android.support:design:26.0.1'时,编译'com.android.support:support- v4:26.0.1'我遇到错误,如何使用此依赖关系?导致剂量用android.support.v4.app.Fragment接受Fragment,我该怎么办?

class MainActivity:AppCompatActivity(){

private var tabLayout: TabLayout? = null
var viewPager: ViewPager? = null

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

    viewPager = findViewById(R.id.viewpager) as ViewPager
    setupViewPager(viewPager!!)

    tabLayout = findViewById(R.id.tabs) as TabLayout
    tabLayout!!.setupWithViewPager(viewPager)

}

private fun setupViewPager(viewPager: ViewPager) {
    val adapter = ViewPagerAdapter(supportFragmentManager)
    adapter.addFragment(OneFragment(), "ONE")
    adapter.addFragment(TwoFragment(), "TWO")
    adapter.addFragment(ThreeFragment(), "THREE")
    viewPager.adapter = adapter
}

internal inner class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) {
    private val mFragmentList = ArrayList<Fragment>()
    private val mFragmentTitleList = ArrayList<String>()

    override fun getItem(position: Int): Fragment {
        return mFragmentList[position]
    }

    override fun getCount(): Int {
        return mFragmentList.size
    }

    fun addFragment(fragment: Fragment, title: String) {
        mFragmentList.add(fragment)
        mFragmentTitleList.add(title)
    }

    override fun getPageTitle(position: Int): CharSequence {
        return mFragmentTitleList[position]
    }
}

}

android android-fragments kotlin android-support-library android-tablayout
1个回答
0
投票

当您使用anroidx时,您将无法使用com.android.support库,也不能使用compile。始终使用实现。

如果使用androidx,请使用此支持库:

implementation 'androidx.appcompat:appcompat:1.1.0'

对于材料设计,请使用此gradle依赖项:

implementation  'com.google.android.material:material:1.1.0'

对于片段,请使用以下片段:androidx.fragment.app

© www.soinside.com 2019 - 2024. All rights reserved.