我不明白为什么我不能Bundle
同一Bundle
中的Parcelable对象和基元。见下文。
Bundle bundle = new Bundle();
bundle.putInt("num", 4); // I like 4.
bundle.putParcelable("myObject", myObject);
Intent localIntent = new Intent(SendingClass.this, ReceivingClass.class);
localIntent.putExtras(bundle);
startActivity(localIntent);
我的ReceivingClass
'onCreate(Bundle savedInstanceState)
,(我知道这里的sIS为空)...
Bundle bundle = getIntent().getExtras();
int num = bundle.getInt("num");
MyObject myObject = (MyObject) bundle.getParcelable("myObject");
我原本期望num和myObject都包含一些内容,但是myObject
已填充,但num始终为0.
如果删除putParcelable和getParcelable
行,则会正确填充“num”(使用4)。
查看该包,它似乎只填充Parcelable
对象(如果有),并“删除”所有其他基元。为什么是这样?我无法找到文件说捆绑包不能包含原语和Parcelables
,是什么给出的?
P.S。我试图首先将Bundle
添加到Parcelable
,然后添加{{1}},但无论如何都不添加骰子。
答案 0 :(得分:1)
正如预期的那样,这是由于Parcelable
课程中的错误。
如果你的public void writeToParcel(Parcel paramParcel, int paramInt){
方法为" make Parcel'中的对象写了太多东西。方法public ParcelableClass(Parcel paramParcel) {
,您的日志中会出现奇怪的错误,这就是造成问题的原因。
确保读取和写入方法具有相同数量的读取/写入以及正确的数据类型。
在我的情况下,我写了4个对象,(2个Parcelable,2个基元),但只读取2个Parcelables和1个基元。一些物体通过确定似乎很奇怪。