Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';Android Parcelable中writeList和WriteType列表的区别是什么_Android - Fatal编程技术网

什么';Android Parcelable中writeList和WriteType列表的区别是什么

什么';Android Parcelable中writeList和WriteType列表的区别是什么,android,Android,我在读取自定义对象列表时遇到问题。 wirteTyped/readList给出了解组未知类型代码异常,但是wirteTyped/readTypedList工作正常。 根据API文件 writeList使用writeValue来写入值,writeValue接受任何实现Parcelable协议的对象,并列出它自己 如果是这样,为什么writeList不能处理自定义对象。 我的目标当然是实现Parcelable Caused by: java.lang.RuntimeException: Par

我在读取自定义对象列表时遇到问题。 wirteTyped/readList给出了解组未知类型代码异常,但是wirteTyped/readTypedList工作正常。 根据API文件

  • writeList使用writeValue来写入值,writeValue接受任何实现Parcelable协议的对象,并列出它自己
如果是这样,为什么writeList不能处理自定义对象。 我的目标当然是实现Parcelable

 Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@a7d7d2: Unmarshalling unknown type code 6881395 at offset 488
09-28 10:58:01.432  9449  9449 E AndroidRuntime:    at android.os.Parcel.readValue(Parcel.java:2319)
09-28 10:58:01.432  9449  9449 E AndroidRuntime:    at android.os.Parcel.readArrayMapInternal(Parcel.java:2592)
09-28 10:58:01.432  9449  9449 E AndroidRuntime:    at android.os.BaseBundle.unparcel(BaseBundle.java:221)
09-28 10:58:01.432  9449  9449 E AndroidRuntime:    at android.os.BaseBundle.getStringArrayList(BaseBundle.java:1038)
09-28 10:58:01.432  9449  9449 E AndroidRuntime:    at android.os.Bundle.getStringArrayList(Bundle.java:908)
09-28 10:58:01.432  9449  9449 E AndroidRuntime:    at android.app.ActivityTransitionState.readState(ActivityTransitionState.java:133)
09-28 10:58:01.432  9449  9449 E AndroidRuntime:    at android.app.Activity.performCreate(Activity.java:6238)
09-28 10:58:01.432  9449  9449 E AndroidRuntime:    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
09-28 10:58:01.432  9449  9449 E AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)

谢谢。

这可能是因为您的
自定义对象。你应该把它贴在这里。有时,您必须在从intent读取值之前设置
ClassLoader
,以避免在解组时发生
BadParcelableException:ClassNotFoundException

intent.setExtrasClassLoader(getClass().getClassLoader());
// reading value here: intent.getParcelableArrayListExtra()

嗨,那个班太大了。我真的不能把它贴在这里。基本上,我使用的是writeList和readList(List outVal,ClassLoader),我使用ABC.class.getclassloader()提供了ClassLoader。但它仍然只适用于readTypedList(列表,创建者c)。@WenChao您应该从
LogCat
发布您的
错误日志,以了解更多错误详细信息。也许ppl可以从编辑的日志中帮助您,我认为这里的日志不是很有帮助。@文超您应该先检查
创建者
字段,然后检查
writeToParcel
构造函数(in)
。可能问题是当您写入和读取不同类型的字段时。