尝试从地块数据

编程入门 行业动态 更新时间:2024-10-13 20:17:04
本文介绍了尝试从地块数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个包含菜单项对象的ArrayList的订单对象。这两个类实现Parcelable接口。

I have an Order Object that contains an ArrayList of MenuItem Objects. Both classes implement the Parcelable interface.

当我试图找回从意向对象在新的活动我得到以下错误:

When I attempt to retrieve the object from the Intent in the new activity I get the following error:

了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.waitron5 / com.example.waitron5.SectionsActivity}:解组时ClassNotFoundException的:android.os.BadParcelableException com.example.waitron5.MenuItem

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.waitron5/com.example.waitron5.SectionsActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.example.waitron5.MenuItem

下面是code,我订单发送对象:

Here is the code where I send the Order object:

i = new Intent(v.getContext(), SectionsActivity.class); i.putExtra("data", order); startActivity(i);

下面是我检索Order对象母鹿:

Here is the doe where I retrieve the Order object:

Intent i = getIntent(); if(i != null && i.hasExtra("data")) { order = i.getParcelableExtra("data"); Toast.makeText( this.getApplicationContext(), "recieved order object, covers: " + order.getCovers() + " table no: " + order.getTable() + " order size: " + order.getItems().size(), Toast.LENGTH_SHORT).show();

Order类:

Order class:

package com.example.waitron5; import java.util.ArrayList; import android.os.Parcel; import android.os.Parcelable; public class Order implements Parcelable { private int covers; private int table; private ArrayList<MenuItem> items; public Order(){ super(); this.items = new ArrayList<MenuItem>(); } public static final Parcelable.Creator<Order> CREATOR = new Parcelable.Creator<Order>() { @Override public Order createFromParcel(Parcel source) { return new Order(source); } @Override public Order[] newArray(int size) { return new Order[size]; } }; public Order(int covers, int table) { super(); this.covers = covers; this.table = table; this.items = new ArrayList<MenuItem>(); } public int getCovers() { return covers; } public void setCovers(int covers) { this.covers = covers; } public int getTable() { return table; } public void setTable(int table) { this.table = table; } public ArrayList<MenuItem> getItems() { return items; } public void setItems(ArrayList<MenuItem> items) { this.items = items; } //add to order public void addToOrder(MenuItem m){ items.add(m); } //remove from order public void removeFromOrder(MenuItem m){ items.remove(m); } public Order(Parcel source) { this(); readFromParcel(source); } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub dest.writeInt(covers); dest.writeInt(table); dest.writeList(items); } @SuppressWarnings("unchecked") private void readFromParcel(Parcel source) { // TODO Auto-generated method stub covers = source.readInt(); table = source.readInt(); source.readList(items, null); } }

MenuItem类:

MenuItem class:

package com.example.waitron5; import android.os.Parcel; import android.os.Parcelable; public class MenuItem implements Parcelable { private String name; private double price; private int qty; private String info; public MenuItem(String name, double price) { super(); this.name = name; this.price = price; } public MenuItem() { // TODO Auto-generated constructor stub } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getQty() { return qty; } public void setQty(int qty) { this.qty = qty; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } @Override public String toString() { return name; } //Parcelable methods. public static final Parcelable.Creator<MenuItem> CREATOR = new Parcelable.Creator<MenuItem>() { @Override public MenuItem createFromParcel(Parcel source) { return new MenuItem(source); } @Override public MenuItem[] newArray(int size) { return new MenuItem[size]; } }; public MenuItem(Parcel source) { this(); readFromParcel(source); } private void readFromParcel(Parcel source) { name = source.readString(); price = source.readDouble(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeDouble(price); } }

任何想法可能是什么回事?

Any ideas as to what may be happening?

推荐答案

我固定我的问题。问题如下:

I fixed my problem. The issue was as follows:

在Order类。

public void writeToParcel(Parcel dest, int flags) { dest.writeInt(covers); dest.writeInt(table); dest.writeList(items); }

应该是:

public void writeToParcel(Parcel dest, int flags) { dest.writeInt(covers); dest.writeInt(table); dest.writeTypedList(items); }

private void readFromParcel(Parcel source) { covers = source.readInt(); table = source.readInt(); source.readList(items, null); }

应该是:

private void readFromParcel(Parcel source) { covers = source.readInt(); table = source.readInt(); items = new ArrayList<MenuItem>(); source.readTypedList(items, MenuItem.CREATOR); }

更多推荐

尝试从地块数据

本文发布于:2023-05-29 03:37:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/335877.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:地块   数据

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!