如何在运行时使用带有参数的 FragmentFactory?
Posted
技术标签:
【中文标题】如何在运行时使用带有参数的 FragmentFactory?【英文标题】:How to use FragmentFactory with arguments at runtime? 【发布时间】:2020-10-05 04:32:34 【问题描述】:假设我有一个带有构造函数的片段,它在运行时根据网络请求获取参数
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类的方法
public final FragmentTransaction replace(@IdRes int containerViewId,
@NonNull Class<? extends Fragment> fragmentClass, @Nullable Bundle args)
return replace(containerViewId, fragmentClass, args, null);
这个方法是如何使用的,它可以与 FragmentFactory 一起使用,以及如何使用这个方法将参数传递给片段?
【问题讨论】:
【参考方案1】:很遗憾,您不能在运行时将动态参数传递给 FragmentManager
。
你仍然需要使用 bundle 和 arguments。
有关此问题的更多详细信息,您可以跟踪它here 并查看谷歌的response。
关于它的简短博客可以找到here
【讨论】:
以上是关于如何在运行时使用带有参数的 FragmentFactory?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AWS Elastic Beanstalk 在 URL 中运行带有参数的 PHP 脚本?
如何在 python 3 解释器中运行带有参数的 python 脚本?