首页 > 解决方案 > 为什么它会抛出类似“没有从 onCreateView() 返回视图或在 onCreateView() 之前调用它。”之类的错误?

问题描述

我的项目有问题,我的代码没有任何错误,但是当我构建项目时,它会抛出一个错误 viewPager2 = requireView().findViewById(R.id.vpager),我不知道为什么?有什么想法吗?

   class MyFragment : Fragment(R.layout.fragment_my) {

    lateinit var viewPager2: ViewPager2
    lateinit var adapter: VideoAdapter

    override fun onCreateView(
            inflater: LayoutInflater,
            container: ViewGroup?,
            savedInstanceState: Bundle?
    ): View? {


        /**set find id*/
        viewPager2 = requireView().findViewById(R.id.vpager)

        /**set database*/
        val mDataBase = Firebase.database.getReference("videos")

        val options = FirebaseRecyclerOptions.Builder<VideoModel>()
            .setQuery(mDataBase,VideoModel::class.java)
            .build()
        /**set adapter*/
        adapter = VideoAdapter(options)
        viewPager2.adapter = adapter

        return view
    }
    override fun onStart() {
        super.onStart()
        adapter.startListening()
    }

    override fun onStop() {
        super.onStop()
        adapter.stopListening()
    }
}

标签: androidkotlin

解决方案


尝试这个

类我的片段:片段(){

lateinit var viewPager2: ViewPager2
lateinit var adapter: VideoAdapter

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {

val view = inflater.inflate(R.layout.fragment_my,容器,假)

    return view
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)


    /**set find id*/
    viewPager2 = view.findViewById(R.id.vpager)

    /**set database*/
    val mDataBase = Firebase.database.getReference("videos")

    val options = FirebaseRecyclerOptions.Builder<VideoModel>()
        .setQuery(mDataBase,VideoModel::class.java)
        .build()
    /**set adapter*/
    adapter = VideoAdapter(options)
    viewPager2.adapter = adapter


}


override fun onStart() {
    super.onStart()
    adapter.startListening()
}

override fun onStop() {
    super.onStop()
    adapter.stopListening()
}

}


推荐阅读