Исключение нулевого указателя при установке ViewPager для TabLayout - PullRequest
0 голосов
/ 02 июля 2018

У меня есть фрагмент, который будет содержать два других фрагмента, к которым можно получить доступ через 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
}

Однако, хотя сам фрагмент теперь отображается, вкладки нет.

1 Ответ

0 голосов
/ 02 июля 2018

Ошибка ясно говорит, что TabLayout равно нулю

Попробуйте изменить

tabBar.setupWithViewPager(tutorialview.tutorialViewPager)

до

tutorialview.tabBar.setupWithViewPager(tutorialview.tutorialViewPager)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...