如何在运行时使用带有参数的 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?的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse 在运行调试器时破坏了带有空格字符的程序参数

如何使用 AWS Elastic Beanstalk 在 URL 中运行带有参数的 PHP 脚本?

如何在 python 3 解释器中运行带有参数的 python 脚本?

如何使用 vba 的 shell() 运行带有参数的 .exe?

如何使用python运行带有参数的exe文件

如何在单元测试中使用 argparse 参数调用函数?