2012-08-25 19 views
26

मैं कैसे पार्सल के मामले में पूर्णांक सरणी के साथ इलाज के लिए किसी भी समस्या का समाधान नहीं मिल सकता है पार्सल करने के लिए (मैं इन दोनों कार्यों dest.writeIntArray (storeId) का उपयोग करना चाहते 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]; 
     } 
      };  
} 

उत्तर

52

है, मैं कोई त्रुटि मिलती है: android.os.Parcel.readIntArray पर java.lang.NullPointerException :

"की वजह से (पार्सल.जावा:672) "

storeID = in.createIntArray(); 

अब कोई त्रुटि नहीं है:

इसके बजाय का उपयोग करने का

"readIntArray" मैं निम्नलिखित का इस्तेमाल किया।

+0

धन्यवाद। मैं कोशिश करूँगा और फिर आपको बता दूंगा। –

+1

धन्यवाद। इससे मेरा काम बनता है। – anivaler

+3

धन्यवाद। ReadFloatArray (...) और createFloatArray() के साथ एक ही समस्या थी हल किया। – PeterVanPansen

0

मुझे लगता है कि कक्षा MyObj पार्ससेलबल लागू करता है और सभी आवश्यक विधियों को लागू करता है; मैं यहाँ केवल पार्सल पढ़ने/लिखने के बारे में विवरण सुझाऊंगा।

तो सरणी आकार पहले से जाना जाता है:

public void writeToParcel(Parcel out, int flags) { 
    super.writeToParcel(out, flags); 
    out.writeIntArray(mMyIntArray);  // In this example array length is 4 
} 

protected MyObj(Parcel in) { 
    super(in); 
    mMyIntArray = new int[4]; 
    in.readIntArray(mMyIntArray); 
} 

अन्यथा:

public void writeToParcel(Parcel out, int flags) { 
    super.writeToParcel(out, flags); 
    out.writeInt(mMyArray.length);  // First write array length 
    out.writeIntArray(mMyIntArray);  // Then array content 
} 

protected MyObj(Parcel in) { 
    super(in); 
    mMyIntArray = new int[in.readInt()]; 
    in.readIntArray(mMyIntArray); 
} 
+0

सैमसंग उपकरणों पर क्रैश का कारण ऊपर जवाब का उपयोग करेगा –

संबंधित मुद्दे