Articles of parcelable

嵌套的parcelable对象不读

我正在尝试包含一个包含一些字符串/ intvariables和一个对象variables的对象。 字符串和int正在工作,但不是嵌套对象。 我明白我也必须这样做,但我显然做错了=。 在我的嵌套类中,调用writeToParcel方法(我使用Log.d()调用检查),但createFromParcel()没有。 我最终得到一个null对象。 这是我的简化代码: public class MyClass implements Parcelable { public MyClass() { } private Integer id; private String name; private MyOtherClass otherClass = new MyOtherClass(); public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String […]

Android ArrayList 作为parcelable传递

现在修改代码以反映已接受的解决方案。 现在,这是一个如何将自定义ArrayList传递给DialogFragment的工作示例。 我正在使用newInstance上的Bundle将自定义对象的ArrayList传递给DialogFragment。 在newInstance中正确接收了arraylist。 对putParcelable的调用执行正常(无错误),但在ArrayList对象的parcelable代码中放置断点表明在设置或获取数据时未调用parcel方法。 我是否正确为ArrayList创建一个LocalityList类并使其成为parcelable,或者Locality类本身是否可以分类? DialogFragment /** * Create a new instance of ValidateUserEnteredLocationLocalitySelectorFragment, providing “localityList” * as an argument. */ public static ValidateUserEnteredLocationLocalitySelectorFragment newInstance(LocalityList localityList) { ValidateUserEnteredLocationLocalitySelectorFragment fragmentInstance = new ValidateUserEnteredLocationLocalitySelectorFragment(); // Supply location input as an argument. Bundle bundle = new Bundle(); bundle.putParcelable(KEY_LOCALITY_LIST, localityList); fragmentInstance.setArguments(bundle); return fragmentInstance; } /** * Retrieve the […]

我不明白为什么会发生这种ClassCastException

// Application … Intent i = new Intent(); i.putExtra(EXTRA_FILE_UPLOAD_URIS, mGalleryAdapter.getItems()); Uri[] getItems() { return mItems; } // Service … intent.getParcelableArrayExtra(EXTRA_FILE_UPLOAD_URIS); //works, returns Parcelable[] Uri[] uris = (Uri[])intent.getParcelableArrayExtra(EXTRA_FILE_UPLOAD_URIS); // … Breaks with ClassCastException 当Uri是Parcelable时,为什么施放到Uri[]破坏?

Android:从不调用Parcelable.writeToParcel和Parcelable.Creator.createFromParcel

我在这里发布问题我是全新的,不过我已经在这里阅读了很多年。 通常情况下,我总能通过彻底搜索网络find我的答案,但这次我不知所措…… 在花了一天时间试图弄清楚为什么这不起作用之后我决定寻求帮助,希望你们能给我一些指针,或者更好的解决方案。 问题:在Android游戏中,我已经到了这样的程度,当用户例如按下HOME屏幕按钮时,我必须让应用程序记住它的状态。 经过一些搜索后,我意识到为了让我的类在重新打开应用程序后初始化回适当的状态,我必须支持Parcelable接口将它们与Bundle一起传递。 在我的onStop和onStart函数中,我分别在Bundle中保存和恢复游戏状态,但是当我在Bundle上调用putParcelable和getParcelable函数时,永远不会调用对象的writeToParcel和createFromParcel函数。 担心这可能是由于游戏的相对复杂性,我认为我最好创建一个非常简单的应用程序,试图让它工作。 基于我在网上看过的许多Parcelable例子,这成了我的课: public class ParcelableTest implements Parcelable { int id; public ParcelableTest(int newID) { id = newID; } private ParcelableTest(Parcel in) { readFromParcel(in); } public void writeToParcel(Parcel out, int arg1) { writeToParcel(out); } public void writeToParcel(Parcel out) { Log.v(“ParcelableTest”,”Writing to parcel”); out.writeInt(id); } public void readFromParcel(Parcel in) { id […]

为什么可以将一个布尔数组写入一个parcel而不是一个布尔值?

在Parcel的文档中,它声明了一种方法 public final void writeBooleanArray (boolean[] val) 但是没有writeBoolean(boolean val)方法writeBoolean(boolean val) 还存在: public final void writeLong (long val) public final void writeLongArray (long[] val) 因此,类似的模式可用于其他原始types。 有人可以解释为什么会这样吗?

传递ArrayList to Activity

我搜索了一些主题,但没有find解决我问题的方法。 public class Series implements Parcelable { private String name; private int numOfSeason; private int numOfEpisode; /** Constructors and Getters/Setters have been removed to make reading easier **/ public Series(Parcel in) { String[] data = new String[3]; in.readStringArray(data); this.name = data[0]; this.numOfSeason = Integer.parseInt(data[1]); this.numOfEpisode = Integer.parseInt(data[2]); } @Override public int describeContents() { return 0; […]

读取和写入整数数组到parcel

在包裹的情况下,我找不到任何有关如何处理整数数组的解决方案(我想使用这两个函数dest.writeIntArray(storeId);和in.readIntArray(storeId); )。 这是我的代码 public class ResponseWholeAppData implements Parcelable { private int storeId[]; public int[] getStoreId() { return storeId; } public void setStoreId(int[] storeId) { this.storeId = storeId; } @Override public int describeContents() { return 0; } public ResponseWholeAppData(){ storeId = new int[2]; storeId[0] = 5; storeId[1] = 10; } public ResponseWholeAppData(Parcel in) { if(in.readByte() == […]

为什么在使用静态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>() { […]