我知道这个问题已经问过很多次了,但我找不到一个解释性的答案。
我希望有一个单一的MyFragment.java,并显示它的所有3页的ViewPager
。
但是当我尝试用这个方法创建一个片段时:
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适配器中的片段之外,还有其他方法吗?这是一个可容忍的解决方案吗?
发布于 2020-01-28 11:08:22
您会得到这个错误,因为当您添加片段时,没有在其上添加一个不同的标记,因此它会检查该片段是否已经由其类添加。并且viewpager将一些页面存储在内存中,因此前面的片段即使不再在视图中,也仍然在内存中。
添加片段时,给它一个不同的标记。
https://stackoverflow.com/questions/59954681
复制相似问题