android - 如何在运行时使用带有参数的 FragmentFactory?
问题描述
假设我有一个带有构造函数的片段,它在运行时根据网络请求获取参数
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 一起使用,以及如何使用这个方法将参数传递给片段?
解决方案
不幸的是,您不能FragmentManager
在运行时将动态参数传递给。
您仍然需要使用 bundle 和 arguments 。
有关此问题的更多详细信息,您可以在此处进行跟踪并查看 google 对此的回复。
可以在此处找到有关它的简短博客
推荐阅读
- python - matplotlib legend() 中的文本间距而不将字体更改为等宽
- elasticsearch - 仅返回对象中包含特定值的数组元素
- c++ - 如何检查 (*this) 上的 std::is_base_of<>
- r - 根据分组变量计算百分比
- java - java - 如何使用java TreeSet实现排序表(按元素的字段排序)?
- cloud-foundry - 在 localhost 节点应用程序运行良好,但在推送 CF 并在 Mindsphere 页面中注册后显示 404 状态
- java - 从倒计时获取变量并将其设置为 TextView
- c - MPI_send 和 MPI_recv 多次
- c# - 由于某种原因,UI 按钮无法统一工作
- c++ - C++ 中的模板类和函数