在androidx中具有FragmentStatePagerAdapter的Viewpager。当我尝试替换选定位置(例如pos 0)上的片段时,出现java.lang.IllegalArgumentException:无法为未连接到FragmentManager的Fragment设置MaxLifecycle
FragmentStatePagerAdapter通过以下方式构造:
内部私有类Adapter(fm:FragmentManager):FragmentStatePagerAdapter(fm,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT){...}
在迁移到androidx之前,其构造为:
内部私有类Adapter(fm:FragmentManager):FragmentStatePagerAdapter(fm){...},一切正常。
使用androidx,这种方式也可以正常工作,但现在在androidx中已弃用此构造函数。
我使用适配器中的方法替换片段,该方法会触发notifyDataSetChanged()然后触发方法
重写fun getItemPosition(object
:任意):Int {..}
在某些情况下会返回POSITION_NONE,然后返回
重写fun getItem(position:Int):片段{...}创建并返回新片段以替换旧片段。但是我遇到了上述异常。
我不显示代码,因为在适配器中实现上述方法似乎无关紧要。