自API 27 FragmentPagerAdapter
起已弃用。最好的替代方法是什么?
就我而言,我知道需要使用类似super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
之类的东西,但是我不知道代码需要去哪里。
我在课堂上得到了这些进口商品:
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
但是FragmentPagerAdapter
中的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]
}
}
答案 0 :(得分:3)
答案 1 :(得分:2)
需要切换到 ViewPager2,他们在这里有迁移指南。
https://developer.android.com/training/animation/vp2-migration#java
答案 2 :(得分:1)
似乎不仅构造函数没有行为,而且类 FragmentPagerAdapter (通过将Framents保留在内存中可以消耗大量内存)和 FragmentStatePagerAdapter 两者都处于贬值阶段。 我不知道可以使用什么来扩展抽象类 PagerAdapter 来延长代码库的寿命。
答案 3 :(得分:0)
替换:
class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager)
具有:
class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
(假设MyViewPagerAdapter
不需要此值是可配置的)
答案 4 :(得分:0)
您可以使用FragmentStateAdapter(fragment)
class YourViewPagerAdapter(fragment: Fragment, val mFragmentList: Array<String>, val viewPager: ViewPager2) : FragmentStateAdapter(fragment){
override fun getItemCount(): Int {
return mFragmentList.size
}
override fun createFragment(position: Int): Fragment {
when(position){
0 -> return YourFirstTabFragment()
1 -> return YourSecondTabFragment()
2 -> return YourThirdTabFragment()
}
return YourFirstTabFragment()
}
}