【发布时间】:2020-09-08 09:00:13
【问题描述】:
我正在编写我的 UI 应用程序以使用 Navigation 架构组件,因此我需要传递一个实现 Parcelable 的 ArrayList 对象,但我找不到任何有关它的信息。
如果您能提供帮助,我将不胜感激。
【问题讨论】:
标签: android android-fragments navigation
我正在编写我的 UI 应用程序以使用 Navigation 架构组件,因此我需要传递一个实现 Parcelable 的 ArrayList 对象,但我找不到任何有关它的信息。
如果您能提供帮助,我将不胜感激。
【问题讨论】:
标签: android android-fragments navigation
您暂时不能通过安全参数共享数据,因为库不支持它。但是,您可以使用这样的传统方法:
如果您想将 ArrayList 数据从FragmentA 发送到FragmentB:
在FragmentA:
val myParcelizedObjectArrayList = ArrayList<MyParcelisedObject>()
val bundle = bundleOf("SOME_BUNDLE_KEY" to myParcelizedObjectArrayList)
findNavController().navigate(R.id.action_fragmentA_to_fragmentB, bundle)
在FragmentB的onCreate()中可以这样获取列表:
val myArrayList = arguments?.getParcelableArrayList<MyParcelisedObject>("SOME_BUNDLE_KEY")
【讨论】:
在你的片段类中添加这个。像这样放置 Parcelable 列表
companion object {
fun getInstance(objList : List<Parcelable>): CustomFragment {
val args = Bundle()
args.putParcelableArrayList("list", objList);
val fragment = CustomFragment()
fragment.arguments = args
return fragment
}
}
阅读这样的参数
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val args = arguments
var myList : List<Parcelable> = args.getParcelableArrayList<Parcelable>("list")
}
【讨论】: