Resolve warning: FragmentPagerAdapter deprecated.

Replace FragmentPagerAdapter with FragmentStateAdapter in
BrowseTabsAdapter.kt.  Refactored getPageTitle as a function that
returns tab name.  Tab text update moved to BrowseFragment.

This requires replacement of setupWithViewPager with
TabMediator.attach in BrowseFragment.

Also requires replacing widget declaration
androidx.viewpager.widget.ViewPager with
androidx.viewpager2.widget.ViewPager2 in fragment_browwse.xml.
This commit is contained in:
Hugh Daschbach 2022-08-25 04:21:04 -07:00 committed by Ryan Harg
parent 8878e3e68f
commit 38a3183b9d
No known key found for this signature in database
GPG Key ID: 89106F3A84E6958C
3 changed files with 12 additions and 10 deletions

View File

@ -1,8 +1,7 @@
package audio.funkwhale.ffa.adapters package audio.funkwhale.ffa.adapters
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.fragment.app.FragmentPagerAdapter
import audio.funkwhale.ffa.R import audio.funkwhale.ffa.R
import audio.funkwhale.ffa.fragments.AlbumsGridFragment import audio.funkwhale.ffa.fragments.AlbumsGridFragment
import audio.funkwhale.ffa.fragments.ArtistsFragment import audio.funkwhale.ffa.fragments.ArtistsFragment
@ -10,13 +9,13 @@ import audio.funkwhale.ffa.fragments.FavoritesFragment
import audio.funkwhale.ffa.fragments.PlaylistsFragment import audio.funkwhale.ffa.fragments.PlaylistsFragment
import audio.funkwhale.ffa.fragments.RadiosFragment import audio.funkwhale.ffa.fragments.RadiosFragment
class BrowseTabsAdapter(val context: Fragment, manager: FragmentManager) : class BrowseTabsAdapter(val context: Fragment) :
FragmentPagerAdapter(manager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { FragmentStateAdapter(context) {
var tabs = mutableListOf<Fragment>() var tabs = mutableListOf<Fragment>()
override fun getCount() = 5 override fun getItemCount() = 5
override fun getItem(position: Int): Fragment { override fun createFragment(position: Int): Fragment {
tabs.getOrNull(position)?.let { tabs.getOrNull(position)?.let {
return it return it
} }
@ -35,7 +34,7 @@ class BrowseTabsAdapter(val context: Fragment, manager: FragmentManager) :
return fragment return fragment
} }
override fun getPageTitle(position: Int): String { fun tabText(position: Int): String {
return when (position) { return when (position) {
0 -> context.getString(R.string.artists) 0 -> context.getString(R.string.artists)
1 -> context.getString(R.string.albums) 1 -> context.getString(R.string.albums)

View File

@ -7,6 +7,7 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import audio.funkwhale.ffa.adapters.BrowseTabsAdapter import audio.funkwhale.ffa.adapters.BrowseTabsAdapter
import audio.funkwhale.ffa.databinding.FragmentBrowseBinding import audio.funkwhale.ffa.databinding.FragmentBrowseBinding
import com.google.android.material.tabs.TabLayoutMediator
class BrowseFragment : Fragment() { class BrowseFragment : Fragment() {
@ -17,7 +18,7 @@ class BrowseFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
adapter = BrowseTabsAdapter(this, childFragmentManager) adapter = BrowseTabsAdapter(this)
} }
override fun onCreateView( override fun onCreateView(
@ -27,11 +28,13 @@ class BrowseFragment : Fragment() {
): View { ): View {
_binding = FragmentBrowseBinding.inflate(inflater) _binding = FragmentBrowseBinding.inflate(inflater)
return binding.root.apply { return binding.root.apply {
binding.tabs.setupWithViewPager(binding.pager)
binding.tabs.getTabAt(0)?.select() binding.tabs.getTabAt(0)?.select()
binding.pager.adapter = adapter binding.pager.adapter = adapter
binding.pager.offscreenPageLimit = 3 binding.pager.offscreenPageLimit = 3
TabLayoutMediator(binding.tabs, binding.pager) { tab, position ->
tab.text = adapter?.tabText(position)
}.attach()
} }
} }

View File

@ -17,7 +17,7 @@
app:tabSelectedTextColor="@color/controlColor" app:tabSelectedTextColor="@color/controlColor"
app:tabTextColor="@color/colorPrimary" /> app:tabTextColor="@color/colorPrimary" />
<androidx.viewpager.widget.ViewPager <androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager" android:id="@+id/pager"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"