Articles of parcelable

Android在SQLite中存储一个Parcelable对象

我需要在Sqlite中存储对象内容。 我想知道哪个是使用对象序列化或使用Parcelable进行此操作的最佳方法。 是否可以将其存储为Parcelable? 我该怎么做?

如何从Parcel中检索使用TextUtils.writeToParcel(…)保存的CharSequence?

我希望能够将格式化文本(即格式跨度的文本)从我的应用程序活动发送到另一个。 这些CharSequence实例深入到我创建的一些Parcelabletypes中。 例如,当编组其中一个带有格式化CharSequence的types时,我使用TextUtils.writeToParcel ,如下所示: public class HoldsCharSequence { /* some formatted string that uses basic spans (eg, ForegroundColorSpan) */ private CharSequence cs; public void writeToParcel(Parcel out, int flags) { TextUtils.writeToParcel(cs, out, 0); } /* … rest of the code … */ } 问题是我不知道如何从私有构造函数中的Parcel中检索CharSequence 。 以下不起作用: private HoldsCharSequence(Parcel in) { cs = (CharSequence) in.readValue(CharSequence.class.getClassLoader()); } 我收到以下错误: […]

扩展实现Parcelable的类

我有一个类,我们称之为A类,它实现了Parcelable。 我有第二堂课,我们称之为Bclass,扩展到Aclass。 我的问题是: 如何将B类成员variables写入Parcel,然后将其父类(即:A类)成员variables写入Parcel(并随后将其读入)? 是否有一些漂亮的技巧,不需要重写A类的包裹代码? 或者我只需要在A类中重写Parcel代码并为B类成员variables添加其他代码?

是否可以包裹generics类?

我正在尝试创建public class MyClass implements Parcelable 。 我在实现Parcelable遇到了麻烦。 是否可以创建一个实现Parcelable的generics类? (注意T是有界的,所以它也必须实现Parcelable )。 我遇到的问题是Parcelable接口需要一个静态variables: public static final Parcelable.Creator CREATOR 。 因此我无法做public static final Parcelable.Creator<MyClass> CREATOR MyParcelable public static final Parcelable.Creator<MyClass> CREATOR因为MyParcelable是非静态的。 安德烈

Android Parcelable – 当IA是接口时,写入和读取ArrayList

我有一个接口IA和类B和C来实现它们。 B和C都实现了Parcelable 。 然后我有一个棘手的部分: D类有一个ArrayList 。 我也需要在arraylist同时插入B和C类。 它们具有相同的结构,但“IS-A”关系不适用。 我需要将D从一个活动传递到另一个活动作为包裹。 我试过在(ArrayList) in.readSerializable编写(ArrayList) in.readSerializable但是我得到了一个IOException 。 我知道如果IA不是一个界面问题很容易,但我似乎无法find一个简单的解决方案。 有任何想法吗? @SuppressWarnings(“unchecked”) public D (Parcel in) { list = new ArrayList(); (…) list = (ArrayList) in.readSerializable } @SuppressWarnings(“rawtypes”) public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public D createFromParcel(Parcel in) { return new D(in); } public D[] newArray(int size) { […]

如何使用Parcelable传递Drawable

我有一个class级,我有一个Drawable作为成员。 这个类我用于跨活动发送数据作为Parcelable额外。 为此,我扩展了parceble,并实现了所需的function。 我能够使用读/写int / string发送基本数据types。 但是在编组Drawable对象时我遇到了问题。 为此我试图将Drawable转换为byte array ,但我得到类Drawable转换exception。 我使用以下代码将我的Drawable转换为Byte数组: Bitmap bitmap = (Bitmap)((BitmapDrawable) mMyDrawable).getBitmap(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[]byteArray = stream.toByteArray(); out.writeInt(byteArray.length); out.writeByteArray(byteArray); 并将字节数组转换为Drawable我使用以下代码: final int contentBytesLen = in.readInt(); byte[] contentBytes = new byte[contentBytesLen]; in.readByteArray(contentBytes); mMyDrawable = new BitmapDrawable(BitmapFactory.decodeByteArray(contentBytes, 0, contentBytes.length)); 当我运行这个时,我得到了类强制转换exception。 我们如何使用HashMap编写/传递Drawable? 我们有什么办法可以在Parcel中传递Drawable。 谢谢。

具有ArrayList的Android类Parcelable

我有一个Android项目,我有一个类。 在该类中是ArrayList 。 我将获得一些XML,解析它,然后从中创建对象,我将传递给另一个活动。 我正在为此选择Parcelable。 Parcelable是一个不错的选择吗? 我做的一切都正确吗? 我对Parcelable真的不熟悉。 我的ArrayList是我在这个类中创建的另一个类。 它是否正确地将对象的ArrayList传递给Parcel,而不是扩展Parcelable和东西? import java.util.ArrayList; import android.os.Parcel; import android.os.Parcelable; import android.support.v4.os.ParcelableCompat; public class Question implements Parcelable{ String id; String text; String image; ArrayList CHOICES; public Question(String id, String text, String image) { super(); this.id = id; this.text = text; this.image = image; } public String getId() { return […]

在活动之间传递对象的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 […]