使用不可为空的片段管理器

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

我想在我的片段中显示我的TabLayout,但他想要可为空的supportFragmentManager

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val fragmentAdapter = MyPagerAdapter(activity?.supportFragmentManager)
        viewpager_main.adapter = fragmentAdapter

        tabs_main.setupWithViewPager(viewpager_main)
    }

这是我的适配器:

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import com.mandarine.targetList.features.targets.list.TargetsFragment

class MyPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {

    override fun getItem(position: Int): Fragment {
        return when (position) {
            0 -> {
                TargetsFragment()
            }
            1 -> SecondFragment()
            else -> {
                return FirstFragment()
            }
        }
    }

    override fun getCount(): Int {
        return 3
    }

    override fun getPageTitle(position: Int): CharSequence {
        return when (position) {
            0 -> "First Tab"
            1 -> "Second Tab"
            else -> {
                return "Third Tab"
            }
        }
    }
}

我如何重写我的值?

val fragmentAdapter = activity?.supportFragmentManager?.let { MyPagerAdapter(it) }

java.lang.IllegalStateException:viewpager_main不能为null

还不建议使用FragmentPagerAdapter,mb需要使用smth new吗?

android kotlin android-adapter android-tablayout androidx
1个回答
0
投票
全局定义两者以在班级中的任何地方使用它

private lateinit var viewpager_main: ViewPager private lateinit var myPagerAdapter :MyPagerAdapter override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewpager_main= view.findViewById(R.id.viewpager_main) myPagerAdapter = MyPagerAdapter(activity!!.supportFragmentManager) }

尝试一下

请检查了解!和?在科特林The difference between !! and ? in Kotlin

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