如何将 FragmentFactory 与 FragmentStatePagerAdapter 一起使用

Pet*_*r F 5 android android-fragments fragmentstatepageradapter androidx android-fragmentfactory

我喜欢 的方法FragmentFactory,它可以将依赖项传递给构造函数中的片段。

我想将自定义FragmentFactoryFragmentStatePagerAdapter.

我在活动中托管视图寻呼机。我可以创建一个自定义片段工厂并将其分配给使用的活动

supportFragmentManager.fragmentFactory = CustomFragmentFactory()
Run Code Online (Sandbox Code Playgroud)

然后我可以用它supportFragmentManager来初始化我的FragmentStatePagerAdapter. 到目前为止还好。

我的问题是视图寻呼机中的片段显示依赖于位置的数据。

假设我有一个列表itemsItemFragment,它显示在显示 的视图寻呼机中items[position],因此有一个如下的构造函数:

class ItemFragment(val item: Item) : Fragment()
Run Code Online (Sandbox Code Playgroud)

我必须如何实现CustomFragmentFactoryandFragmentStatePagerAdaptergetItem(position: Int)函数才能实现与此等效的安全功能:

override fun getItem(position: Int) = ItemFragment(items[position])
Run Code Online (Sandbox Code Playgroud)

Pet*_*r F 0

FragmentFactory不提供传递动态数据的方法。因此,FragmentFactory在这种情况下不起作用。

\n

如果您有动态参数,则必须使用捆绑包以经典方式传递它们(或使用像 Safe Args 这样的方法,它使用捆绑包生成代码)。

\n

本文讨论了完全相同的场景:

\n
\n

使用 FragmentFactory 的限制是我们不能\xe2\x80\x99t 向它传递动态参数。

\n

假设我们有一个 ViewPager,它显示同一个 mainFragment 的两个实例,但具有不同的 textToDisplay 值,那么使用fragmentFactory 实现就不可能实现这一点。

\n
\n