Androidx FragmentStatePagerAdapter-无法为未附加到FragmentManager的Fragment设置MaxLifecycle

时间:2019-09-05 11:52:18

标签: android-viewpager androidx fragmentstatepageradapter

在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):片段{...}创建并返回新片段以替换旧片段。但是我遇到了上述异常。

我不显示代码,因为在适配器中实现上述方法似乎无关紧要。

0 个答案:

没有答案