Articles of parcelable

如何在android中使用Intent将对象的ArrayList从一个传递给另一个活动?

我在onClick()方法的代码中有以下内容 List mQuestionsList = QuestionBank.getQuestions(); 现在我有了这一行后的意图,如下: Intent resultIntent = new Intent(this, ResultActivity.class); resultIntent.putParcelableArrayListExtra(“QuestionsExtra”, (ArrayList) mQuestionsList); startActivity(resultIntent); 我不知道如何将这个问题列表从一个活动传递到另一个活动My Question类 public class Question { private int[] operands; private int[] choices; private int userAnswerIndex; public Question(int[] operands, int[] choices) { this.operands = operands; this.choices = choices; this.userAnswerIndex = -1; } public int[] getChoices() { return choices; } public […]

如何修复Android中偏移YYY的Unmarshalling未知types代码XXX?

由于Unmarshallingexception,我正在恢复应用程序崩溃。 我检查了所有Seri​​alizables都没有参数的构造函数,甚至使用ObjectStream检查了所有可序列化(保存到文件并从文件加载)。 我如何理解导致exception的parcelable偏移的实际类types: Parcel android.os.Parcel@42209460: Unmarshalling unknown type code 2131165303 at offset 3748 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2080) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2105) at android.app.ActivityThread.access$600(ActivityThread.java:136) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4876) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:804) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:571) at com.kdgdev.xtension.core.XtensionMain.main(XtensionMain.java:91) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@42209460: Unmarshalling unknown type code 2131165303 at offset 3748 at […]

Parcel.readStringArray()的参数是什么?

我试图通过使用Parcelable来保存我的Fragment的状态。 当我希望找回我在Parcelable中保存的String数组时,这会导致以下代码: public MyObject createFromParcel(Parcel in) { titles=in.readStringArray(???); } 现在readStringArray需要一个参数,一个String[] ……但为什么呢? 它可以只给出我存储在其中的字符串。 我不知道先验有多少,所以这很糟糕。 🙁 文档说明如下: 也就是说,没什么。 编辑:如果有人有同样的问题:我最终使用writeBundle() / readBundle()并将我的String[]放入Bundle 。

使用自定义parcelable类在Android应用中解组错误

对于我的Android应用程序,我得到了几个解组错误,尽管我认为我已经完成了通过Parcelable正确保存和加载对象所需的一切。 你能告诉我我的代码有什么问题吗? 错误1: java.lang.RuntimeException: Unable to start activity ComponentInfo Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@41279860: Unmarshalling unknown type code 6619241 at offset 1372 at android.os.Parcel.readValue(Parcel.java:1922) at android.os.Parcel.readMapInternal(Parcel.java:2094) at android.os.Bundle.unparcel(Bundle.java:223) at android.os.Bundle.getParcelable(Bundle.java:1158) at android.app.Activity.onCreate(Activity.java:860) at my.app.package.PlayComputer.onCreate(PlayComputer.java:1012) at android.app.Activity.performCreate(Activity.java:4465) MyActivity中的第1012 MyActivity是对super.onCreate(savedInstanceState);的调用super.onCreate(savedInstanceState); 在Activity的onCreate() 。 protected void onSaveInstanceState(Bundle savedInstanceState) { if (myObject == null) { savedInstanceState.putParcelable(“myObject”, null); } else { […]

Unmarshalling Android Intent Parcelable时找不到类

我有一个我在activities之间传递的ArrayList 。 在这个ArrayList是由一个包含四个variables的class构成的对象。 其中一个variables是来自另一个class另一个ArrayList 。 我已经在两者上实现了Parcelable,我很确定我已经正确完成了parcelable方法。 以下是错误: 错误: 03-18 02:37:27.063: D/dalvikvm(3249): GC_FOR_ALLOC freed 82K, 6% free 3020K/3180K, paused 1ms, total 3ms 03-18 02:37:27.093: I/dalvikvm-heap(3249): Grow heap (frag case) to 3.626MB for 635808-byte allocation 03-18 02:37:27.103: D/dalvikvm(3249): GC_FOR_ALLOC freed 5K, 5% free 3635K/3804K, paused 10ms, total 10ms 03-18 02:37:27.173: D/(3249): HostConnection::get() New Host Connection established 0xb96396c0, […]

如果对象是可分区的,则Android JUnit不会编译

我有一个非常简单的类,我写了一个非常简单的Junit测试,这是成功的。 现在我将实现Parcelable添加到我的类中。 我的代码很好用,应用程序运行良好,但我的Junit测试不再编译,因为NoClassDefFoundError:android / os / Parcelable 我不是要测试parcelable属性,我只需要我的测试来编译。 我想有一个配置问题,但我找不到要修改的内容来解决这个问题。 我在Android Studio 2.3上工作。 我已经尝试重启android studio / rebuild / clean … 帮助将是apreciated。 java.lang.NoClassDefFoundError: android/os/Parcelable at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.example.me.myapp.PropositionUnitTest.isDeltaCPositiveOrNullIsCorrect1(PropositionUnitTest.java:53) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) […]

如何在Android上读取和写入Enum到parcel?

这是我的模型类: public enum Action { RETRY, SETTINGS } private int imageId; private String description; private String actionName; private Action action; public NetworkError(int imageId, String description, String actionName, Action action ) { this.imageId = imageId; this.description = description; this.actionName = actionName; this.action = action; } public int getImageId() { return imageId; } public void setImageId(int imageId) […]

通过Parcel传输ByteArray会返回NullPointerException

import android.os.Parcel; import android.os.Parcelable; public class MClass implements Parcelable { private byte[] _byte; public MClass() { } public MClass(Parcel in) { readFromParcel(in); } public byte[] get_byte() { return _byte; } public void set_byte(byte[] _byte) { this._byte = _byte; } public int describeContents() { return 0; } public void writeToParcel(Parcel dest, int flags) { dest.writeByteArray(_byte); } […]

包裹解组未知types代码

我们在Play商店记录的崩溃报告中收到此错误。 不能在我们所有的测试中复制这个。 有没有其他人有同样的问题或解决方案? 事实上,我们甚至不知道如何复制这个bug。 所有Parcelable对象都定义了CREATOR,writeToParcel()和contructor 。 初始化所有列表和复杂types并进行空值检查。 java.lang.RuntimeException: Unable to start activity ComponentInfo{au.com.company/au.com.company.DetailsActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@42d6e270: Unmarshalling unknown type code 6881381 at offset 11268 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2247) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2297) at android.app.ActivityThread.access$700(ActivityThread.java:152) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5328) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@42d6e270: […]

将对象放入Handler消息中

我需要从互联网上下载一个图像,在另一个主题中, 然后将处理程序消息中的图像对象发送到UI线程。 我已经有了这个: … Message msg = Message.obtain(); Bundle b = new Bundle(); b.putParcelable(“MyObject”, (Parcelable) object); msg.setData(b); handler.sendMessage(msg); 当我收到此消息时,我想提取对象: … public void handleMessage(Message msg) { super.handleMessage(msg); MyObject objectRcvd = (MyObject) msg.getData().getParcelable(“IpTile”); addToCache(ipTile); mapView.invalidate(); } 但是这给了我: …java.lang.ClassCastException… 有人可以帮忙吗? 顺便说一句,这是最有效的方式 将对象传递给UI线程? 谢谢你们!