首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >没有事务的Android ViewPager具有相同类的所有片段

没有事务的Android ViewPager具有相同类的所有片段
EN

Stack Overflow用户
提问于 2020-01-28 10:09:51
回答 1查看 544关注 0票数 0

我知道这个问题已经问过很多次了,但我找不到一个解释性的答案。

我希望有一个单一的MyFragment.java,并显示它的所有3页的ViewPager

但是当我尝试用这个方法创建一个片段时:

代码语言:javascript
运行
AI代码解释
复制
new MyFragment()

并将其添加到ViewPager中,我得到以下错误:

在androidx.fragment.app.Fragment.setInitialSavedState(Fragment.java:679) at androidx.viewpager2.adapter.FragmentStateAdapter.ensureFragment(FragmentStateAdapter.java:269) at androidx.viewpager2.adapter.FragmentStateAdapter.onBindViewHolder(FragmentStateAdapter.java:175) at androidx.viewpager2.adapter.FragmentStateAdapter.onBindViewHolder(FragmentStateAdapter.java:67) at androidx.recyclerview上添加了片段。widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065) at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)

我想知道是否有可能在ViewPager中添加相同的片段。它的可能应用包括

浏览器在查看器中包含WebView片段的web浏览器

为什么我们需要使用单例片段?为什么我们不能把碎片当作可以多个实例化的回收物品呢?就连viewpager2也越来越像RecyclerView了。

如果不可能重复实例化片段并将它们添加到同一个ViewPager中,那么除了用正常的充气视图替换ViewPager适配器中的片段之外,还有其他方法吗?这是一个可容忍的解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-28 11:08:22

您会得到这个错误,因为当您添加片段时,没有在其上添加一个不同的标记,因此它会检查该片段是否已经由其类添加。并且viewpager将一些页面存储在内存中,因此前面的片段即使不再在视图中,也仍然在内存中。

添加片段时,给它一个不同的标记。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59954681

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文