@@ -8,8 +8,9 @@ import android.view.MenuItem
8
8
import android.view.View
9
9
import android.view.ViewGroup
10
10
import androidx.fragment.app.Fragment
11
- import androidx.fragment.app.FragmentPagerAdapter
12
11
import androidx.navigation.fragment.findNavController
12
+ import androidx.viewpager2.adapter.FragmentStateAdapter
13
+ import com.google.android.material.tabs.TabLayoutMediator
13
14
import com.google.firebase.auth.ktx.auth
14
15
import com.google.firebase.ktx.Firebase
15
16
import com.google.firebase.quickstart.database.R
@@ -22,7 +23,7 @@ class MainFragment : Fragment() {
22
23
private var _binding : FragmentMainBinding ? = null
23
24
private val binding get() = _binding !!
24
25
25
- private lateinit var pagerAdapter: FragmentPagerAdapter
26
+ private lateinit var pagerAdapter: FragmentStateAdapter
26
27
27
28
override fun onCreateView (inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ): View ? {
28
29
_binding = FragmentMainBinding .inflate(inflater, container, false )
@@ -34,28 +35,27 @@ class MainFragment : Fragment() {
34
35
setHasOptionsMenu(true )
35
36
36
37
// 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 ) {
38
39
private val fragments = arrayOf<Fragment >(
39
40
RecentPostsFragment (),
40
41
MyPostsFragment (),
41
42
MyTopPostsFragment ())
42
43
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]
47
45
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
53
47
}
54
48
55
49
// Set up the ViewPager with the sections adapter.
56
50
with (binding) {
57
51
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()
59
59
}
60
60
}
61
61
0 commit comments