如何在运行时使用带参数的 FragmentFactory?

How to use FragmentFactory with arguments at runtime?

假设我有一个带有构造函数的片段,它在运行时根据网络请求获取参数

class MyFragment(private val myArg: Int) : Fragment() {
   // Do layout and other stuff
}

我做了一个示例 FragmentFactory 来传递,但我的问题是有没有更好的方法来传递参数,尤其是当我们有各种片段在运行时需要参数时?

class MyFragmentFactory private constructor() : FragmentFactory() {

    var myArg = 0

    override fun instantiate(classLoader: ClassLoader, className: String): Fragment {

        return when (className) {
            MyFragment::class.java.name -> MyFragment(myArg)
            else -> super.instantiate(classLoader, className)
        }
    }
}

有FragmentManager的方法class

  public final FragmentTransaction replace(@IdRes int containerViewId,
        @NonNull Class<? extends Fragment> fragmentClass, @Nullable Bundle args) {
    return replace(containerViewId, fragmentClass, args, null);
}

如何使用此方法,能否与 FragmentFactory 一起使用,以及如何使用此方法将参数传递给片段?

遗憾的是,您无法在运行时将动态参数传递给 FragmentManager
你仍然需要使用 bundle 和参数。

有关此问题的更多详细信息,您可以跟踪它here and check google's response

可以找到关于它的简短博客 here