我有一个片段,我在我的Activity中创建了一个新的Instance,同时我将一个Parcelable数据类传递给该片段,如下所示:
fun newInstance(
use: User,
date: Date
): CalendarDialogFragment {
val fragment = MyFragment()
val bundle = Bundle()
bundle.putParcelable("user", user)
bundle.putSerializable("date", date)
fragment.arguments = bundle
return fragment
}
在片段中我想这样使用它:
var user = arguments?.getParcelable("user")
var date = arguments?.getSerializable("date")
这是一种向片段传递数据的正常方式。由于浅复制,当我更改此用户对象并更新其在片段中的字段时,包对象也将被更新。但对于某些对象,如Date
(java.util)类型,则不会发生这种情况。例如,如果我将一个Date
传递给片段并执行相同的操作,日期的bundle对象不会像用户对象那样更新,我想我在这里遗漏了什么!?
1条答案
按热度按时间2o7dmzc51#
这里你需要做一个用户的深度拷贝,也就是说,一个不拷贝引用的拷贝,但是实际上拷贝了引用所指向的对象。我认为你需要了解深度拷贝和浅拷贝。你可以在这里阅读What is the difference between a deep copy and a shallow copy?