Articles of parcelable

在活动之间传递对象的arraylist

我试图在两个活动之间传递一个对象的arraylist,但我的应用程序在第二个活动中粉碎。 有人可以帮我解决这个问题…… 这是我第一次活动的代码: Intent i = new Intent(); Bundle b = new Bundle(); b.putParcelableArrayList(“songs”,(ArrayList) albumsArray.get(position).getSongs()); Log.v(“–“, “OK”); i.putExtras(b); i.setClass(LatestAlbums.this, AlbumDetails.class); startActivity(i); 和第二个活动的代码: songs=new ArrayList(); Bundle b = this.getIntent().getExtras(); if(b!=null) songs = b.getParcelable(“songs”); Log.v(“–“, songs.size()+””); 我的logcat输出: 04-03 16:37:03.513: E/AndroidRuntime(6576): FATAL EXCEPTION: main 04-03 16:37:03.513: E/AndroidRuntime(6576): java.lang.RuntimeException: Parcel: unable to marshal value com.musicapp.objects.Songs@419489e8 04-03 16:37:03.513: E/AndroidRuntime(6576): at […]

抽象类作为parcelable

基本上我在我的应用程序中有以下结构: 在没有抽象类ProjectItem情况下实现这样的结构会很简单,但在这种情况下我不知道如何实现它。 抽象类ProjectItem需要一个CREATOR因为它应该是可以分配的。 (如in.readTypedList(mProjectItems, ProjectItem.CREATOR);在构造函数Project(Parcel in)中) 但实际上,出于逻辑原因, CREATOR只能在其派生类中实现。 那么,如何实现这个结构以保持类Project parcelable? 编辑 这就是Project的构造函数之一: private Project(Parcel in) { in.readTypedList(mProjectItems, ProjectItem.CREATOR); } 但正如我已经说过的, ProjectItem不应该实现CREATOR

是否可以在Android上创建可Parcelable的HashMap?

我试图将HashMap扩展为Parcelable,我得到了编译的语法,但是,在运行时它会抛出exception并返回一个空指针,试图取消编组数据。 发送者必须转换为(Parcelable)来解决歧义,但是,接收者抱怨预期Parcelable但是find了HashMap。 有人有成功吗? 我的语法错了吗? 有更好的解决方案吗? 以下是代码: HomeActivity.java – 发件人 ContentViewActivity.java – 接收器 ContentItemSimple.java – 顾名思义(包装一个String和Integer) ContentItemCollection.java – 这是HashMap HomeActivity.java package com.mobibob.android.studyparceable; import java.util.HashMap; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.text.format.Time; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class HomeActivity extends Activity implements OnClickListener { private static final String […]

解组时ClassNotFoundException并且真的不知道为什么

固定:在底部回答 我正在为一个项目编写一个Android应用程序,我试图使用parcelable对象。 我有2个可分类的课程。 第一个是只有2个参数的普通类。 第二个是具有附加属性的类和具有第一个类中的types的列表以及它的附加对象。 每当我尝试将第二个类的对象传递给另一个Activity时,我得到android.os.BadParcelableException:当解组时ClassNotFoundException 并关闭应用程序。 我现在搜索了几个小时,尝试了多种解决方案,但没有任 当我只将第一个类的对象传递给另一个活动时,错误不会发生。 这是我的代码: package de.softwareproject.v3.testclasses; import android.os.Parcel; import android.os.Parcelable; public class Cart implements Parcelable { private String name; private Integer priceInCents; public Cart() {} public Cart(Parcel in){ readFromParcel(in); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getPriceInCents() […]

ArrayList无法强制转换为Parcelable

我得到以下错误: 键com..BookStatus期望Parcelable但值是ArrayList ClassCastException:ArrayList无法强制转换为Parcelable – > and thefter:无法启动Activity – NullPointerException ArrayList有BookStatus对象的值(listToPass) 键com.example.books.BookStatus期望Parcelable但值是java.util.ArrayList。 返回了默认值 尝试转换生成的内部exception: java.lang.ClassCastException:java.util.ArrayList无法强制转换为android.os.Parcelable 在com.example.books4locals.SearchActivity.onCreate(SearchActivity.java:46) – >这是bundle.getparcelable方法 我能做什么? HomeActivity.java ArrayList listToPass = new ArrayList(); // fill with smthg protected void onPostExecute(String result) { if (listToPass != null) { Intent i = new Intent(getApplicationContext(), SearchActivity.class); // ArrayList bs = new ArrayList (Arrays.asList(bArr)); i.putParcelableArrayListExtra(“com.example.books.BookStatus”, listToPass); startActivity(i); SearchActivity.java […]

如何在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, […]