我收到以下错误消息:
java.lang.RuntimeException: Parcel android.os.Parcel@41141190: Unmarshalling unknown type code 7602286 at offset 16
at android.os.Parcel.readValue(Parcel.java:1921)
at android.os.Parcel.readMapInternal(Parcel.java:2094)
at android.os.Bundle.unparcel(Bundle.java:223)
at android.os.Bundle.getFloat(Bundle.java:981)
我正在使用WiFi直接发送一个对象作为消息。因此,我在发送时将对象转换为字节数组,在接收时反转转换。
我的对象有两个字段——一个String和一个android bundle。在发送时,我正在填充字符串字段,并使用键在android捆绑包中放置一个浮点值。
我能够在接收器端检索字符串值。当我尝试使用getFloat
方法检索bundle中存在的浮点值时,就会出现错误。这可能是什么原因?
花了很多小时我找到了解决方案,我在Parcelable类中犯了错误,我忘记了写和读其中一个参数,最后我解决了问题,我的代码看起来像:
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(filepath);
dest.writeString(filename);
dest.writeString(fileCount);
dest.writeInt(index);
}
public YourParcelableClassName(Parcel in){
filepath = in.readString();
filename = in.readString();
fileCount = in.readString();
index = in.readInt();
}
在第一活动通行证数据中,
Intent mIntent = new Intent(YourFirstActivity.this,YourSecondActivity.class);
mIntent.putExtra("position",position);
mIntent.putParcelableArrayListExtra("filedata",parcelableArrayList);
startActivity(mIntent);
用于将意图数据输入第二个活动,
int Position = getIntent().getIntExtra("position",0);
parcelableArrayList = getIntent().getParcelableArrayListExtra("filedata");