因为API 27不推荐FragmentPagerAdapter。最好的替代方案是什么?
在我的例子中,我理解需要使用类似于super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)的东西,但是我不知道在我的代码中需要用到什么。
我在班上得到了这些进口品:
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter但FragmentPagerAdapter in class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager){被划掉了。
class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager){
private val fragmentList : MutableList<androidx.fragment.app.Fragment> = ArrayList()
private val titleList : MutableList<String> = ArrayList()
override fun getItem(position: Int): androidx.fragment.app.Fragment {
return fragmentList[position]
}
override fun getCount(): Int {
return fragmentList.size
}
fun addFragment(fragment: androidx.fragment.app.Fragment, title: String){
fragmentList.add(fragment)
titleList.add(title)
}
override fun getPageTitle(position: Int): CharSequence? {
return titleList[position]
}
}发布于 2019-06-26 17:23:33
更新2021-06-14:在这一点上,ViewPager本身几乎是不可取的.从技术上讲,ViewPager是不受欢迎的,但是两个具体的PagerAdapter实现-- FragmentPagerAdapter和FragmentStatePagerAdapter --被否决了。理想情况下,切换到其他东西,如ViewPager2或适于伴奏的传呼机。
取代:
class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager)通过以下方式:
class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)(假设MyViewPagerAdapter不需要配置此值)
发布于 2020-03-20 23:15:57
发布于 2021-10-06 13:44:01
用ViewPager2切换到FragmentStateAdapter。
以下是XML视图:-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>class AdapterTabPager(activity: FragmentActivity?) : FragmentStateAdapter(activity!!) {
private val mFragmentList: MutableList<Fragment> = ArrayList()
private val mFragmentTitleList: MutableList<String> = ArrayList()
public fun getTabTitle(position : Int): String{
return mFragmentTitleList[position]
}
fun addFragment(fragment: Fragment, title: String) {
mFragmentList.add(fragment)
mFragmentTitleList.add(title)
}
override fun getItemCount(): Int {
return mFragmentList.size
}
override fun createFragment(position: Int): Fragment {
return mFragmentList[position]
}
}下面是实例化ViewPager的方法:-
val adapter = AdapterTabPager(activity)
adapter.addFragment(categoryFragment, "Category")
adapter.addFragment(brandFragment, "Brand")
rootView.viewpager.adapter = adapter
rootView.viewpager.currentItem = 0
TabLayoutMediator(rootView.tabs, rootView.viewpager) { tab, position ->
tab.text = adapter.getTabTitle(position)
}.attach()https://stackoverflow.com/questions/56778106
复制相似问题