相关疑难解决方法(0)

Android Parcelable - RetailerOrderActivity.java返回null

我必须将一个活动传递给另一个活动:

我有SalesProduct enetity类:

 public class Product implements Parcelable{

    private double availableQuantity;
    private double price;
    private String productCode; 
    private String description; 
    private String description2;
    private String productGroup;
    private String alternateSearch;
    private String productTypeCode; 
    private String nonStockItemFlag;
    private String salableFlag;
    private double weight;
    private double qty;
    private double grossValue;
    private double value;
    private ArrayList<Product> product;


    public Product() {

    }
    public Product(Parcel in) {
         this();
          readFromParcel(in);
    }

       /*
       * Constructor calls read to create object
       */
       private void readFromParcel(Parcel in) {
          in.readTypedList(product, Product.CREATOR); …
Run Code Online (Sandbox Code Playgroud)

android

12
推荐指数
1
解决办法
9448
查看次数

使用带有循环引用的Parcelable

似乎Parcelable没有优雅地处理像Serializable那样的循环引用.在下面的示例中,Bar的序列化工作正常,但将其写入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 {

    final Bar bar = new Bar();
    final Baz baz = new Baz(bar);
    bar.baz = baz;

    // First, serialize
    final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    new ObjectOutputStream(bytes).writeObject(bar); …
Run Code Online (Sandbox Code Playgroud)

android parcelable

8
推荐指数
1
解决办法
3293
查看次数

实现包含其他Parcelable的Parcelable时出现问题

我正在实现具有另一个Parcelable insde的Parcelable类.

在OuterParcelable类中:

@Override
public void writeToParcel(Parcel dest, int flags) {
    Bundle tmp = new Bundle();

    tmp.putParcelable("innerParcelable", mParcelable);
    dest.writeBundle(tmp);
Run Code Online (Sandbox Code Playgroud)

然后:

public OuterParcelable(Parcel parcel) {
    super();

    Bundle b = parcel.readBundle();
    mParcelable = b.getParcelable("innerParcelable");
Run Code Online (Sandbox Code Playgroud)

和:

    public OuterParcelable createFromParcel(Parcel in) {
        return new OuterParcelable(in);
    }
Run Code Online (Sandbox Code Playgroud)

当我使用上面的代码重新创建对象时,我得到:

 08-18 17:13:08.566: ERROR/AndroidRuntime(15520): Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: my.package.InnerParcelable
Run Code Online (Sandbox Code Playgroud)

android bundle unmarshalling parcelable classnotfoundexception

7
推荐指数
1
解决办法
7065
查看次数