Использование 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)