在NavigationComponents中的Fragment之间传递ArrayList<Object>

问题描述 投票:0回答:3

我正在编写 UI 应用程序以使用导航架构组件,因此我需要传递一个实现 Parcelable 的 ArrayList 对象,但我找不到任何有关它的信息。

如果您愿意帮忙,我将不胜感激。

android android-fragments navigation
3个回答
1
投票

您暂时无法通过安全参数共享数据,因为该库不支持它。但是,您可以使用这样的传统方法:

如果要将 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")

0
投票

[1.您可以选择类型自定义可序列化] 1

[2.那么你需要寻找 ArrayList ] 2

[3.你会得到一个像这样的窗口] 3

  1. 最后,在另一个片段中,您需要使用对象返回数组列表
    navArgs.arrayList as ArrayList<YourObject>

并且您可以通过导航组件将数组列表传递到另一个片段,因为数组对象实现了 java.io.Serialized 接口


-1
投票

在您的片段类中添加此内容。像这样放置可打包列表

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")
}
© www.soinside.com 2019 - 2024. All rights reserved.