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和参数
关于这个问题的更多细节,你可以追踪它,并查看谷歌的链接
可以找到一个关于它的简短博客