Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用不可为空的片段管理器_Android_Kotlin_Android Adapter_Android Tablayout_Androidx - Fatal编程技术网

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

Android 使用不可为空的片段管理器,android,kotlin,android-adapter,android-tablayout,androidx,Android,Kotlin,Android Adapter,Android Tablayout,Androidx,我想在我的片段中显示我的表格布局,但他希望可以为空supportFragmentManager: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val fragmentAdapter = MyPagerAdapter(activity?.supportFragmentManager) viewpager_main.ada

我想在我的片段中显示我的
表格布局
,但他希望可以为空
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

val fragmentAdapter = activity?.supportFragmentManager?.let { MyPagerAdapter(it) }
java.lang.IllegalStateException:viewpager_main不能为null

另外,
FragmentPagerAdapter
已被弃用,mb需要使用smth new?

getActivity()在片段准备过程中和即将准备就绪时可以为空。通常在OnCreate中会发生这种情况,而在OnViewCreated中,视图已经生成,活动在这里永远不会为null

在onViewCreated中分配viewpager适配器

全局定义这两者,以便在类中的任何位置使用它

    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)
}
试试这个

请查看以了解!!然后呢?在科特林

您需要在
onViewCreated
中的片段中访问视图,而不是在
onCreate
@MohammedAlaa中,但如果我写入
val fragmentAdapter=activity?.supportFragmentManager
在onViewCreated中,我会得到可为空的fragmentAdapter,但这是正常检查