Android Fragments 在< Object>NavigationComponents中的片段之间传递ArrayList

mlmc2os5  于 2023-10-19  发布在  Android
关注(0)|答案(3)|浏览(152)

我正在编写使用导航架构组件的UI应用程序,因此我需要传递一个实现Parcelable的ArrayList Object,但我找不到有关它的任何信息。
如果你能帮忙我会很感激的。

8cdiaqws

8cdiaqws1#

你现在不能通过安全参数共享数据,因为库不支持它。但是,你可以使用传统的方法,比如:
如果要将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")
yyhrrdl8

yyhrrdl82#

步骤
**1.**可以选择自定义序列化类型

**2.**然后需要查找ArrayList

**3.**你会得到一个这样的窗口

**4.**最后,在另一个片段中,您需要使用Object navArgs.arrayList as ArrayList<YourObject>将其返回到您的ArrayList,并且您可以通过导航组件将Array列表传递给另一个片段,因为Array对象实现了java.io.Serializable接口

jslywgbw

jslywgbw3#

在你的fragment类中添加这个。像这样放置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")
}

相关问题