【发布时间】:2015-11-14 13:13:24
【问题描述】:
我有一个这样定义的 POJO 对象:
public class MYPOJO implements Serializable {
int myint;
String mystring;
}
然后当我将信息传递给活动时,我会这样做:
Intent i = new Intent(this, WearActivity.class);
Bundle b = new Bundle();
MYPojo pojo = new MYPojo();
pojo.mystring="cool";
b.putSerializable("someString", pojo.mystring);//this line is my issue
i.putExtra("coolBundle",b);
startActivityForResult(i, 0);
并阅读额外的“someString”:
Bundle b2 = getIntent().getBundleExtra("coolBundle");
b2.getString("someString");
所以现在我的问题是:如果我在最后我仍然要求检索 b2.getString("someString") :
b.putString("someString",pojo.mystring)
对比
b.putSerializable("someString",pojo.mystring) ?
【问题讨论】:
-
你的 POJO 可能应该实现 Parcelable。更多可以找到here
-
我意识到它应该实现 paracelable 以提高效率并避免反射。但是我想知道如果我使用 putString 而不是 putSerializable 是否有任何问题。它只是我继承了一个不使用 parcelable 的项目,我想知道那里的设计决策。我看到他们调用 putSerializable(...) 并在那里通过 getString(...) 检索它,这似乎很奇怪,我想要一个解释。没有崩溃,两种方法似乎都有效,但是否有使用其中任何一种的设计考虑?
-
好吧,我相信你可以传入一个字符串,因为它本质上是一个字符数组,它允许它是可序列化的。对我来说,在 String 周围放置一个包装器就是在一个包装器周围放置一个包装器。这听起来像是一种设计选择,而我不会这样做
-
我想我的意思是,如果您只传递一个字符串,请使用 put/get 字符串方法。如果您要传递带有更多数据的 POJO,请实现 parcelable。可序列化有效,但您似乎意识到了效率/反射参数。
-
如果需要,您可以发布官方答案以供考虑。
标签: android android-intent serializable