我正在编写 UI 应用程序以使用导航架构组件,因此我需要传递一个实现 Parcelable 的 ArrayList 对象,但我找不到任何有关它的信息。
如果您愿意帮忙,我将不胜感激。
您暂时无法通过安全参数共享数据,因为该库不支持它。但是,您可以使用这样的传统方法:
如果要将 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")
在您的片段类中添加此内容。像这样放置可打包列表
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")
}