Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在运行时使用带有参数的FragmentFactory?_Android_Android Fragments_Fragmentmanager_Android Fragmentfactory - Fatal编程技术网

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

Android 如何在运行时使用带有参数的FragmentFactory?,android,android-fragments,fragmentmanager,android-fragmentfactory,Android,Android Fragments,Fragmentmanager,Android Fragmentfactory,假设我有一个带有构造函数的片段,它在运行时根据网络请求(例如)获取一个参数 class MyFragment(private val myArg: Int) : Fragment() { // Do layout and other stuff } 我做了一个示例FragmentFactory来传递参数,但我的问题是,有没有更好的方法来传递参数,特别是当我们有各种各样的片段在运行时需要参数时 class MyFragmentFactory private constructor() :

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

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);
}
public final FragmentTransaction replace(@IdRes int containerwid,

@非空类很遗憾,您无法在运行时将动态参数传递给
FragmentManager

您仍然需要使用bundle和参数

关于这个问题的更多细节,你可以追踪它,并查看谷歌的链接

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