@@ -8,8 +8,9 @@ import android.view.MenuItem
88import android.view.View
99import android.view.ViewGroup
1010import androidx.fragment.app.Fragment
11- import androidx.fragment.app.FragmentPagerAdapter
1211import androidx.navigation.fragment.findNavController
12+ import androidx.viewpager2.adapter.FragmentStateAdapter
13+ import com.google.android.material.tabs.TabLayoutMediator
1314import com.google.firebase.auth.ktx.auth
1415import com.google.firebase.ktx.Firebase
1516import com.google.firebase.quickstart.database.R
@@ -22,7 +23,7 @@ class MainFragment : Fragment() {
2223 private var _binding : FragmentMainBinding ? = null
2324 private val binding get() = _binding !!
2425
25- private lateinit var pagerAdapter: FragmentPagerAdapter
26+ private lateinit var pagerAdapter: FragmentStateAdapter
2627
2728 override fun onCreateView (inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ): View ? {
2829 _binding = FragmentMainBinding .inflate(inflater, container, false )
@@ -34,28 +35,27 @@ class MainFragment : Fragment() {
3435 setHasOptionsMenu(true )
3536
3637 // Create the adapter that will return a fragment for each section
37- pagerAdapter = object : FragmentPagerAdapter (parentFragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT ) {
38+ pagerAdapter = object : FragmentStateAdapter (parentFragmentManager, viewLifecycleOwner.lifecycle ) {
3839 private val fragments = arrayOf<Fragment >(
3940 RecentPostsFragment (),
4041 MyPostsFragment (),
4142 MyTopPostsFragment ())
4243
43- private val fragmentNames = arrayOf(
44- getString(R .string.heading_recent),
45- getString(R .string.heading_my_posts),
46- getString(R .string.heading_my_top_posts))
44+ override fun createFragment (position : Int ) = fragments[position]
4745
48- override fun getItem (position : Int ) = fragments[position]
49-
50- override fun getCount () = fragments.size
51-
52- override fun getPageTitle (position : Int ) = fragmentNames[position]
46+ override fun getItemCount () = fragments.size
5347 }
5448
5549 // Set up the ViewPager with the sections adapter.
5650 with (binding) {
5751 container.adapter = pagerAdapter
58- tabs.setupWithViewPager(container)
52+ TabLayoutMediator (tabs, container) { tab, position ->
53+ tab.text = when (position) {
54+ 0 -> getString(R .string.heading_recent)
55+ 1 -> getString(R .string.heading_my_posts)
56+ else -> getString(R .string.heading_my_top_posts)
57+ }
58+ }.attach()
5959 }
6060 }
6161
0 commit comments