读取和写入整数数组到parcel

Atu*_*waj 29 android parcelable

在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() == (byte)1) 
             in.readIntArray(storeId);  //how to do this storeId=in.readIntArray();  ?                          
        }

    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        if(storeId!=null&&storeId.length>0)                   
        {
            dest.writeByte((byte)1);
            dest.writeIntArray(storeId);
        }
        else
            dest.writeByte((byte)0);

    }
    public static Parcelable.Creator<ResponseWholeAppData> getCreator() {
        return CREATOR;
    }

    public static void setCreator(Parcelable.Creator<ResponseWholeAppData> creator) {
        CREATOR = creator;
    }

    public static Parcelable.Creator<ResponseWholeAppData> CREATOR = new Parcelable.Creator<ResponseWholeAppData>()
            {
        public ResponseWholeAppData createFromParcel(Parcel in)
        {
            return new ResponseWholeAppData(in);
        }
        public ResponseWholeAppData[] newArray(int size)
        {
            return new ResponseWholeAppData[size];
        }
            };      
}
Run Code Online (Sandbox Code Playgroud)

小智 58

当我使用" in.readIntArray(storeID)"时,我收到一个错误:

"引起:android.os.Parcel.readIntArray(Parcel.java:672)中的java.lang.NullPointerException".

而不是使用" readIntArray"我使用以下内容:

storeID = in.createIntArray();
Run Code Online (Sandbox Code Playgroud)

现在没有错误.

  • 谢谢.有同样的问题与readFloatArray(...)和createFloatArray()解决了它. (3认同)