您好我是Android的初级开发者:)我想将ArrayList<Custom>
的{{1}}值发送给Activity
。我知道必须使用Fragment
,但我不知道该方法可以帮助我。
Bundle
和putSerializable
有什么不同?putParcelable
或putParcelableArrayList
?感谢所有这些让我有机会成长:)
答案 0 :(得分:8)
Serializable
和Parcelable
都是一个界面。前者与java一样古老。它允许您以持久的方式存储/写入对象。它的美妙之处在于您只需实现界面即可。后者Parcelable
是特定于Android的。它比Serializable
快,但您必须实现接口的方法才能使用它。
putSerializable和putParcelable
的不同之处
putSerializable
接受实现Serializable
的对象,putParcelable接受实现Parcelable
的对象
在我的情况下,哪种方法可以帮我putParcelableArrayList或 putSerializable?
很难说。一般来说,我会说Parcelable
答案 1 :(得分:2)
一般来说,Parcelable
比Serializable
更快。如果您想了解更多相关内容,请参阅以下文章http://www.developerphil.com/parcelable-vs-serializable/
答案 2 :(得分:2)
除了为给定键添加到地图的实际值之外,putSerializable和putParcelable之间没有区别。 putParcelableArrayList也是如此。在给定的密钥,您将阅读SparseArray<? extends Parcelable>
。
Blackbelt解释得非常好。
从我的角度来看,您不需要在内部使用Serializable。 我建议使用android的容器进行消息(Parceable)。您永远不会知道Android SDK的用途,并且您确实希望确保最大程度的兼容性。请记住,Android拥有自己的SDK(而不是Java)。
答案 3 :(得分:1)
对于你必须实现Parcelable
或Serializable
类,都允许持久化。
Parcelable
更快,您将编写更多功能以使其正常工作:
describeContents()
writeToParcel(Parcel out, int flags)
Parcelable.Creator<MyClass> CREATOR = new Parcelable.Creator<MyClass>()
MyClass(Parcel in) //an constructor for Parcel object (Parcelable)
http://developer.android.com/reference/android/os/Parcelable.html
Serializable
较低,但您只需在类上添加界面即可使其工作:
private static final long serialVersionUID = 0L;
http://developer.android.com/reference/java/io/Serializable.html
答案 4 :(得分:1)
Parcelable是一个接口,每个想要使用intent传递不同活动的对象都必须实现这个接口。这个接口有两种方法,我们必须 implements: describeContent()
< / strong>返回一个返回void的int和writeToParcel(Parcel dest, int flags)
。实现此接口的类必须有一个名为CREATOR
的静态字段,操作系统使用该字段重新创建对象。可以通过Android中的Intent传递可分辨的Parcelable数组。这是在活动之间传递数据并利用所有android功能的最优雅方式。