Articles of parcelable

为什么在使用静态variables执行相同任务时使用parcelable?

我在android和java中是新的…我正在阅读从天的夫妇有关传输数据或variables值从一个活动到另一个或另一个类的android parcelling教程…但我不是很了解这一点。 你能告诉我,这是否有必要使用Parcelable为此目的,因为同样的任务也可以使用static关键字的variables作为string,整型或数组types,那么为什么parcelable请详细解释..谢谢解释提前,请提供与例子比较

Android Parcelable数组长度不对

Parcelables并。 为什么他们不能更容易? 我试图编写一个应用程序发送ArrayList作为parcelable。 当我尝试在第二个Activity中获得Intent时,我会得到这个错误: 12-29 21:36:08.158: W/System.err(20117): java.lang.RuntimeException: bad array lengths 12-29 21:36:08.158: W/System.err(20117): at android.os.Parcel.readStringArray(Parcel.java:967) 12-29 21:36:08.158: W/System.err(20117): at net.sutomaji.sv.helperclasses.NewsItem.<init>(NewsItem.java:102) 12-29 21:36:08.158: W/System.err(20117): at net.sutomaji.sv.helperclasses.NewsItem$1.createFromParcel(NewsItem.java:129) 12-29 21:36:08.158: W/System.err(20117): at net.sutomaji.sv.helperclasses.NewsItem$1.createFromParcel(NewsItem.java:1) 12-29 21:36:08.158: W/System.err(20117): at android.os.Parcel.readParcelable(Parcel.java:2104) 12-29 21:36:08.158: W/System.err(20117): at android.os.Parcel.readValue(Parcel.java:2013) 12-29 21:36:08.158: W/System.err(20117): at android.os.Parcel.readListInternal(Parcel.java:2343) 12-29 21:36:08.158: W/System.err(20117): at android.os.Parcel.readArrayList(Parcel.java:1703) 12-29 21:36:08.158: W/System.err(20117): at […]

使自定义对象的ArrayList可以分组

我有两个类创build对象,我需要通过意图,我目前正在尝试实现Parcelable来做到这一点。 import android.os.Parcel; import android.os.Parcelable; public class Item implements Parcelable { private String name; private double price; private int buyerCount = 0; public Item(String name, double price) { this.name = name; this.price = price; } private Item(Parcel in) { name = in.readString(); price = in.readDouble(); } public static final Parcelable.Creator<Item> CREATOR = new Parcelable.Creator<Item>() { […]

使用Parcelable与循环引用

似乎Parcelable并没有像Serializable那样优雅地处理循环引用。 在下面的例子中,序列化栏工作得很好,但是将它写入Parcel会导致一个计算器: I/TestRunner( 1571): java.lang.StackOverflowError I/TestRunner( 1571): at android.os.Parcel.writeParcelable(Parcel.java:1106) I/TestRunner( 1571): at android.os.Parcel.writeValue(Parcel.java:1029) I/TestRunner( 1571): at com.XXX.util.ParcelableTest$Bar.writeToParcel(ParcelableTest.java:209) I/TestRunner( 1571): at android.os.Parcel.writeParcelable(Parcel.java:1106) I/TestRunner( 1571): at android.os.Parcel.writeValue(Parcel.java:1029) I/TestRunner( 1571): at com.XXX.util.ParcelableTest$Baz.writeToParcel(ParcelableTest.java:246) I/TestRunner( 1571): at android.os.Parcel.writeParcelable(Parcel.java:1106) I/TestRunner( 1571): at android.os.Parcel.writeValue(Parcel.java:1029) I/TestRunner( 1571): at com.XXX.util.ParcelableTest$Bar.writeToParcel(ParcelableTest.java:209) I/TestRunner( 1571): at android.os.Parcel.writeParcelable(Parcel.java:1106) I/TestRunner( 1571): at android.os.Parcel.writeValue(Parcel.java:1029) public void testCircular() throws Exception { […]

用Proguard进行混淆时出现的问题

我的应用程序在混淆之前工作正常,但是当启用proguard时,出现以下错误: 2013-05-02 13:43:58.772 E 30138/AndroidRuntime: FATAL EXCEPTION: main java.lang.NumberFormatException: Invalid long: "0.20" at java.lang.Long.invalidLong(Long.java:125) at java.lang.Long.parse(Long.java:362) at java.lang.Long.parseLong(Long.java:353) at java.lang.Long.parseLong(Long.java:319) at com.sourcetone.data.model.Station.long getId()(SourceFile:195) at com.sourcetone.STStationListFragment.void deleteStation(com.sourcetone.data.model.Station)(SourceFile:298) at com.sourcetone.STStationListFragment.void access$4(com.sourcetone.STStationListFragment,com.sourcetone.data.model.Station)(SourceFile:293) at com.sourcetone.STStationListFragment$ArrayListAdapter$1.void onClick(android.view.View)(SourceFile:274) at android.view.View.performClick(View.java:3528) at android.view.View$PerformClick.run(View.java:14217) at android.os.Handler.handleCallback(Handler.java:605) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4482) 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:794) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561) at dalvik.system.NativeStart.main(Native […]

YouTube Android播放器API在新的YouTube版本中抛出“BadParcelableException ClassNotFoundException:unmarshalling:asc”时

向YouTube Android播放器API库工程师提交错误:请参阅android–youtube-api标记 在过去一周半的时间里,我注意到这个奇怪的BadParcelableException在我们的应用程序中稳步增长,并且已经将它钉在了YouTube上的新版本上。 如果您的应用正在播放YouTubevideo,将您的应用带到后台,强制停止Youtube应用,并再次恢复您的应用,则会发生此崩溃。 在Youtube版本12.19.56上重现崩溃。 还在较旧的YouTube版本12.05.21上进行了testing,崩溃不在那里。 堆栈跟踪: main Exception: Unable to start activity ComponentInfo{com.myapp.MainActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: asc Stack: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.MainActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: asc at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6121) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) Caused by: android.os.BadParcelableException: […]

如何为包含List <List <String >>的类实现Parcelable?

除了List<List<String>>之外,我的Parcelable Class中的所有字段都有Parcelable实现 class Employee implements Parcelable { List<List<String>> details; //……. protected Employee(Parcel in) { details = new ArrayList<List<String>>(); // i know this is wrong just posting to clarify in.readList(details, List.class.getClassLoader()); //…… } public void writeToParcel(Parcel dest, int flags) { dest.writeList(details); //….. } public int describeContents() { return 0; } public static final Parcelable.Creator<Employee> CREATOR = […]

BadParcelableException – BroadcastReceiver意图崩溃

这个错误似乎偶尔发生,这很奇怪。 它通常工作正常,但偶尔会爬起来。 这是我的代码,这是在BroadcastReceiver: public void onReceive(Context context, Intent intent) { MyCustomResponseMsg message = new MyCustomResponseMsg((MyMessage) intent.getParcelableExtra(MyMessage.EXTRA_MESSAGE_KEY)); // do stuff with the message setResultCode(Activity.RESULT_OK); } 这里是例外: 01-16 10:05:03.834: ERROR/AndroidRuntime(13533): FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start receiver com.(path-to-broadcast-receiver).MyReqReceiver: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.(path-to-my-message).MyMessage at android.app.ActivityThread.handleReceiver(ActivityThread.java:1805) at android.app.ActivityThread.access$2400(ActivityThread.java:117) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3683) at […]

通过包检索一个parcelable对象总是创build新的副本?

我通过在创build片段的同时添加一个可分段的对象到一个片段。 在onc实例中,对这个包裹对象的修改反映了对原始对象的修改,而在另一种情况下则不是。 我对这种行为有点困惑。 直到现在,我已经假设通过一个包检索一个包裹的对象总是创build一个新的对象[不知道是浅层复制还是深层复制]。 有人请澄清可说的行为。

可传递的inheritance:抽象类 – 哪个CREATOR?

我有一个实现Parcelable的抽象类A 我有一个Bclass和一个Cclass,都是Aclass。 我怎样才能让它们可以被翻阅? 因为我可以链接它,并提供一个CREATOR在A和B如许多职位build议。 但是因为我有其他的存储ABC类和实现Parcelable自己的对象,这种方法似乎没有工作,因为当我想要传递一个ArrayList我将不得不使用types列表中的CREATOR ArrayList<A> elements = new ArrayList<>(); in.readTypedList(elements , B.CREATOR); // B.CREATOR? C.CREATOR??? 这显然没有意义。 那我该如何正确地制作一个可以分类的东西呢? 也就是说,我想让这个类Parcelable,所以我可以用一个普通的方式来引用A. 一个) public abstract class A implements Parcelable { final String globalVar; public A(String globalVar) { this.globalVar = globalVar; } } B) public class B extends A { String bVar; public B(String global, String bVar) { super(global); […]