Использование fragmentManager.replace для ViewPager2 приводит к ошибке E/RecyclerView: No adapter attached; skipping layout

Я хочу реализовать такой интерфейс: по нажатию на кнопку в контейнере ConstraintLayout в контейнер должен устанавливаться фрагмент с ViewPager2 который реализует горизонтальный скролинг между 3мя фрагментами. Кнопку из процесса я пока исключил, описанное действие происходит при запуске приложения. К сожалению я получаю ошибку E/RecyclerView: No adapter attached; skipping layout. Я сильно новичок в андроиде и вообще не понимаю, где она возникает ( я ведь не использую RecyclerView)

Мой код MainActivity

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import ru.uneedit.testviewpager.databinding.ActivityMainBinding
import ru.uneedit.testviewpager.databinding.FragmentViewPager2ContainerBinding

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)


        val mBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(mBinding.root)

        val pagerFrag = ViewPager2Container()
        val pagerBinding = FragmentViewPager2ContainerBinding.inflate(layoutInflater)
        val pager = pagerBinding.viewPager
        pager.adapter = ViewPagerAdapter(this, ChatFragment())

        supportFragmentManager.beginTransaction()
            .replace(R.id.data_container, pagerFrag)
            .commit()
    }
}

Мой код ViewPagerAdapter

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter

class ViewPagerAdapter(fragmentActivity: FragmentActivity?, val chatFrag : Fragment) : FragmentStateAdapter(fragmentActivity!!) {

    override fun createFragment(position: Int): Fragment {
        return when (position) {
            0 -> PollFragment()
            1 -> chatFrag
            2 -> MoneyFragment()

            else -> Fragment()
        }
    }

    override fun getItemCount(): Int {
        return 3
    }
}

layout для ViewPager2Container

<?xml version="1.0" encoding="utf-8"?>
<androidx.viewpager2.widget.ViewPager2
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ViewPager2Container"
    android:id = "@+id/view_pager"
/>

Реализацию ViewPager2 я подсмотрел в разделе о java - android - ViewPager2 на metanit и переписал её на kotlin она работает если не заморачиваться с заменой фрагмента

supportFragmentManager.beginTransaction()
            .replace(R.id.data_container, pagerFrag)

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