fragmentpageradapter - 如何扩展 FragmentPagerAdapter 类?
问题描述
当我尝试扩展他们的类时,我的 Android Studio 页面代码中不推荐使用 FragmentPagerAdapter。这个问题很烦人。我搜索了很多,但没有找到任何结果。请看下面的页面
package com.example.buyown;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
public class PageAdapter extends FragmentPagerAdapter {
int tabCount;
public PageAdapter(@NonNull FragmentManager fm, int behavior) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT );
tabCount= behavior;
}
@NonNull
@Override
public Fragment getItem(int position) {
switch (position){
case 0:return new buyOwnTab1();
case 1:return new buyOwnTab2();
default: return null;
}
}
@Override
public int getCount() {
return tabCount;
}
}
解决方案
https://developer.android.com/reference/androidx/fragment/app/FragmentPagerAdapter上的文档说:
此类已弃用。
切换到 ViewPager2 并改用 FragmentStateAdapter。
虽然从技术上讲,基于 FragmentPagerAdapter 与 FragmentStateAdapter 的内部结构,FragmentPagerAdapter 很容易遵循,因为它依赖于findFragmentByTag
+ attach
+ detach
+ add
,而 FragmentStateAdapter 和 ViewPager2 依赖于 RecyclerView 和“定期执行的gcFragments()
调用”,这非常棘手,所以除非你明确要求ViewPager2 支持的新行为,没有理由从 ViewPager 切换 - 因为标准 ViewPager 还依赖于 Fragments 支持的标准机制。
这就是为什么@SuppressWarnings("deprecation")
有时也是一个有效的解决方案,尽管并非总是如此。
IIRC,主要的关键区别是更简单的垂直滑动支持和更好的 RTL 支持。
推荐阅读
- python - 如何设置hydra的参数HYDRA_FULL_ERROR?
- java - 如何让天气信息默认显示用户当前位置的天气?开放天气地图
- java - OpenCv 无法读取小图像
- javascript - TypeError:无法读取reactjs中未定义的属性'map'
- node.js - docker build 跳过 Dockerfile CMD
- javascript - 如何在 React Native 应用程序中使用 Axios 将图像和视频作为 blob 正确上传到 Azure 存储容器?
- powerbi - 试图理解 DAX 中的 CALCULATE 和 FILTER
- python - #PythonBasemap 如何使用'for循环'在底图上绘制来自nc4的数据?
- ffmpeg - 使用 FFMPEG 将 Live Photo 元数据写入视频
- android - Android设置方向