Как использовать FragmentStateAdapter в Fragment?
В своем приложении использую NavigationDrawer, который имеет три пункта - фрагмент с ViewPager2, фрагмент с WebView и фрагмент с RecyclerView. Все преходы делаю через Navigation. В фрагменте с ViewPager2 использую FragmentStateAdapter, который принимает FragmentActivity.
Вопрос: Можно ли привести Fragment к FragmentActivity? Если нет, то как запускать активити по нажатию на один из пунктов NavigationDrawer'а?
Ниже приведен код фрагмента с ViewPager'ом:
class ViewPagerFragment : Fragment() {
private lateinit var viewPager: ViewPager2
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_recycler_view, container, false)
viewPager = view.findViewById(R.id.view_pager)
val pagerAdapter = ScreenSlidePageAdapter()
viewPager.adapter = pagerAdapter
return view
}
private inner class ScreenSlidePageAdapter(fragmentActivity: FragmentActivity) :
FragmentStateAdapter(fragmentActivity) {
override fun getItemCount(): Int =
NUM_PAGES
override fun createFragment(position: Int): Fragment = when(position) {
0 -> SlideScreenPageFragment(R.drawable.image_one, "First image")
1 -> SlideScreenPageFragment(R.drawable.image_two, "Second image")
2 -> SlideScreenPageFragment(R.drawable.image_three, "Third image")
else -> throw NullPointerException()
}
}
companion object {
private const val NUM_PAGES = 3
}
Ответы (1 шт):
Автор решения: Alex Filonenko
→ Ссылка
В конструктор FragmentStateAdapter можно передавать фрагмент, содержащий ViewPager