【问题标题】:Null Pointer Exception When Setting ViewPager for TabLayout为 TabLayout 设置 ViewPager 时出现空指针异常
【发布时间】:2021-02-03 19:32:10
【问题描述】:

我有一个片段,其中包含两个可以通过TabLayout 访问的片段

我有以下 Kotlin 代码:

class TutorialFragment : Fragment() {

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

        val tutorialview = inflater.inflate(R.layout.fragment_tutorial, container, false )

        tutorialview.tutorialViewPager.adapter = TutorialFragmentPagerAdapter(context!!, fragmentManager!!)

        //Null Pointer Exception on this line 
        tabBar.setupWithViewPager(tutorialview.tutorialViewPager)


        return tutorialview
    }

    companion object {
        fun newInstance() = TutorialFragment()
    }
}

我的代码因异常而崩溃:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.TabLayout.setupWithViewPager(android.support.v4.view.ViewPager)' on a null object reference
        at com.vedantroy.animefacekeyboard.home.tutorial.TutorialFragment.onCreateView(TutorialFragment.kt:23) 

更新 1 -

按照图比的建议,

我将代码更改为:

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

    Log.d("KEYBOARD-APP","Inside tutorial fragment onCreate()...")
    val tutorialView = inflater.inflate(R.layout.fragment_tutorial, container, false )
    tutorialView.tutorialViewPager.adapter = TutorialFragmentPagerAdapter(fragmentManager!!)
    tutorialView.tabBar.setupWithViewPager(tutorialView.tutorialViewPager)

    return tutorialView
}

但是,虽然现在显示了片段本身,但选项卡却没有。

【问题讨论】:

标签: android android-fragments nullpointerexception android-viewpager android-tablayout


【解决方案1】:

错误清楚地表明TabLayout 为空

尝试改变

tabBar.setupWithViewPager(tutorialview.tutorialViewPager)

tutorialview.tabBar.setupWithViewPager(tutorialview.tutorialViewPager)

【讨论】:

  • 嗯..我这样做了,异常消失了。但是,选项卡本身仍然没有显示。
  • 您可能缺少选项卡的标题或 xml 布局内部有问题
【解决方案2】:

由于某些原因,android studio 并没有自动导入顶部的库,我建议你手动执行。

将此添加为 TutorialFragment 中的顶级声明

import com.google.android.material.tabs.TabLayout

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多