FragmentStateAdapter не вызывает метод createFragment

Всем привет. У меня есть ViewPager2 и к нему адаптер. (FragmentStateAdapter) Адаптер выставляется в onViewCreated так:

fragmentPagerBinding.viewPager.adapter = adapter

Но вызова createFragment в адаптере не происходит. Почему так?

Фрагмент:

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View {
    fragmentPagerBinding = FragmentPagerBinding.inflate(inflater)
    return fragmentPagerBinding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    adapter = PageAdapter(this)      
    fragmentPagerBinding.viewPager.adapter = adapter

    fragmentPagerBinding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
        override fun onPageSelected(position: Int) {
            when (position) {
                1 -> {
                }
                2 -> {
                    adapter?.updateServicesFragment()
                }
            }
            super.onPageSelected(position)
        }
    })

    fragmentPagerBinding.viewPager.let {
        TabLayoutMediator(fragmentPagerBinding.tabLayout, it) { tab, position ->
            when (position) {
                0 -> {
                    val menu0Icon: Drawable? =
                        ResourcesCompat.getDrawable(
                            this.resources,
                            R.drawable.ic_car_color_blue, null
                        )
                    tab.text = requireContext().getString(R.string.main_menu)
                    tab.icon = menu0Icon
                }
                1 -> {
                    val menu1Icon: Drawable? =
                        ResourcesCompat.getDrawable(
                            this.resources,
                            R.drawable.menu1, null
                        )
                    tab.text = ""
                    tab.text = getString(R.string.history_menu)
                    tab.icon = menu1Icon
                }
                2 -> {
                    val menu2Icon: Drawable? =
                        ResourcesCompat.getDrawable(
                            this.resources,
                            R.drawable.services_2, null
                        )
                    tab.text = ""
                    tab.text = getString(R.string.services_menu)
                    tab.icon = menu2Icon
                }
                3 -> {
                    val menu3Icon: Drawable? =
                        ResourcesCompat.getDrawable(
                            this.resources,
                            R.drawable.ic_person, null
                        )
                    tab.text = ""
                    tab.text = getString(R.string.profile_menu)
                    tab.icon = menu3Icon
                }
            }

            it.setCurrentItem(tab.position, true)
        }.attach()

        val resources = this.resources
        fragmentPagerBinding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
            override fun onTabSelected(tab: TabLayout.Tab?) {
                when (tab?.position) {
                    0 -> {
                        val menu0IconBlue: Drawable? =
                            ResourcesCompat.getDrawable(
                                resources,
                                R.drawable.ic_car_color_blue, null
                            )
                        disableTexts(fragmentPagerBinding.tabLayout, tab, getString(R.string.main_menu))
                        tab.icon = menu0IconBlue
                    }
                    1 -> {
                        val menu1IconBlue: Drawable? =
                            ResourcesCompat.getDrawable(
                                resources,
                                R.drawable.ic_history_blue, null
                            )
                        disableTexts(fragmentPagerBinding.tabLayout, tab, getString(R.string.history_menu))
                        tab.icon = menu1IconBlue
                    }
                    2 -> {
                        val menu2IconBlue: Drawable? =
                            ResourcesCompat.getDrawable(
                                resources,
                                R.drawable.ic_servises_blue, null
                            )
                        disableTexts(fragmentPagerBinding.tabLayout, tab, getString(R.string.services_menu))
                        tab.icon = menu2IconBlue
                    }
                    3 -> {
                        val menu3IconBlue: Drawable? =
                            ResourcesCompat.getDrawable(
                                resources,
                                R.drawable.ic_person_blue, null
                            )
                        disableTexts(fragmentPagerBinding.tabLayout, tab, getString(R.string.profile_menu))
                        tab.icon = menu3IconBlue
                    }
                }
            }

            override fun onTabUnselected(tab: TabLayout.Tab?) {
            }

            override fun onTabReselected(tab: TabLayout.Tab?) {
            }

        })

        try{
            val profilePosition = requireArguments().getInt(Constants.POSITION)
            fragmentPagerBinding.viewPager.postDelayed({
                fragmentPagerBinding.viewPager.currentItem = profilePosition
            }, 1)
        } catch (e: IllegalStateException)
        {
            Timber.d("")
        }
    }

    val onBackPressedCallback: OnBackPressedCallback = object : OnBackPressedCallback(
        true // default to enabled
    ) {
        override fun handleOnBackPressed() {
            Timber.d("main back pressed")
        }
    }

    val lifecycleOwner: LifecycleOwner = this
    requireActivity().onBackPressedDispatcher.addCallback(
        lifecycleOwner, // LifecycleOwner
        onBackPressedCallback
    )
}

Адаптер:

class PageAdapter(fragment: Fragment)
: FragmentStateAdapter(fragment) {
private lateinit var fragment:Fragment
private val servicesFragment: ServicesFragment = ServicesFragment()

override fun getItemCount(): Int {
    return 4
}

override fun createFragment(position: Int): Fragment {
    when(position){
        0 -> fragment = ProfileFragment()
        1 -> fragment = HistoryFragment()
        2 -> {
            fragment = servicesFragment
            (fragment as ServicesFragment).updateServicesFragment()
        }
        3 -> fragment = ProfileAuthFragment()
    }

    return fragment
}

fun updateServicesFragment() {
    servicesFragment.updateServicesFragment()
}

}

Layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   tools:context=".ui.pager.PagerFragment">

   <androidx.viewpager2.widget.ViewPager2
       android:id="@+id/viewPager"
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="1" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1px"
        android:background="@color/black"/>

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tabLayout"
        style="@style/TabText"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_gravity="bottom"
        android:elevation="20dp"
        android:textAllCaps="false"
        android:translationZ="20dp"
        app:tabSelectedTextColor="@color/add_car_tab"
        app:tabTextAppearance="@style/TabWidget"
        tools:ignore="SpeakableTextPresentCheck" /></LinearLayout>

Ответы (0 шт):