2016-09-07 91 views
1

我想將自定義模型表單片段​​傳遞給另一個片段。我的模型是:傳遞具有使用可序列化的其他對象的對象.giving錯誤

public class AddressBookModel implements Serializable { 
    public String getFirstname() { 
     return firstname; 
    } 

    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 

    public String getLastname() { 
     return lastname; 
    } 

    public void setLastname(String lastname) { 
     this.lastname = lastname; 
    } 

    public String getCountry() { 
     return country; 
    } 

    public void setCountry(String country) { 
     this.country = country; 
    } 

    public String getStreet() { 
     return street; 
    } 

    public void setStreet(String street) { 
     this.street = street; 
    } 

    public String getPincode() { 
     return pincode; 
    } 

    public void setPincode(String pincode) { 
     this.pincode = pincode; 
    } 

    public String getCity() { 
     return city; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 

    public String getReion() { 
     return reion; 
    } 

    public void setReion(String reion) { 
     this.reion = reion; 
    } 

    public String getLandlineNo() { 
     return landlineNo; 
    } 

    public void setLandlineNo(String landlineNo) { 
     this.landlineNo = landlineNo; 
    } 

    public String getMobileno() { 
     return mobileno; 
    } 

    public void setMobileno(String mobileno) { 
     this.mobileno = mobileno; 
    } 

    public String getPrifix() { 
     return prifix; 
    } 

    public void setPrifix(String prifix) { 
     this.prifix = prifix; 
    } 

    String firstname; 
    String lastname; 
    String country; 
    String street; 
    String pincode; 
    String city; 
    String reion; 
    String landlineNo; 
    String mobileno; 
    String prifix; 


} 

和另一個模型類是

public class OrderDataModel implements Serializable{ 

    public String getUserId() { 
     return userId; 
    } 

    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

    public String getEmailAddress() { 
     return emailAddress; 
    } 

    public void setEmailAddress(String emailAddress) { 
     this.emailAddress = emailAddress; 
    } 

    public ArrayList<ProductBuyDataModel> getbuyProductDetail() { 
     return buyProductDetail; 
    } 

    public void setbuyProductDetail(ArrayList<ProductBuyDataModel> productBuyDataModelsArraylist) { 
     this.buyProductDetail = productBuyDataModelsArraylist; 
    } 

    String phoneno; 

    public String getPhoneno() { 
     return phoneno; 
    } 

    public void setPhoneno(String phoneno) { 
     this.phoneno = phoneno; 
    } 



    String userId,emailAddress; 
ArrayList<ProductBuyDataModel> buyProductDetail; 

    public AddressBookModel getShipAddDetail() { 
     return shipAddDetail; 
    } 

    public void setShipAddDetail(AddressBookModel shipAddDetail) { 
     this.shipAddDetail = shipAddDetail; 
    } 

    public AddressBookModel getBillAddDetail() { 
     return billAddDetail; 
    } 

    public void setBillAddDetail(AddressBookModel billAddDetail) { 
     this.billAddDetail = billAddDetail; 
    } 

    AddressBookModel shipAddDetail,billAddDetail; 
} 

它成功地將數據傳輸到片段,但它之後,它顯示錯誤

RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.laxmikantbolya.shreenamokar.Model.OrderDataModel) 

我不知道爲什麼發送數據後發生錯誤。我使用OrderDataModel 來傳遞數據。它包含另一個模型類作爲變量。 簡單的單一模型很容易,我可以發送。但我有問題要傳遞包含另一個對象的對象 。

我不是沒有爲什麼「Parcelable遇到IOException」即使我不使用parcealble任何地方在我的模型列表中。

logcat的輸出

09-07 06:16:56.620 18732-18732/com.example.laxmikantbolya.shreenamokar E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.laxmikantbolya.shreenamokar, PID: 18732 
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.laxmikantbolya.shreenamokar.Model.OrderDataModel) 
    at android.os.Parcel.writeSerializable(Parcel.java:1388) 
    at android.os.Parcel.writeValue(Parcel.java:1335) 
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:638) 
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313) 
    at android.os.Bundle.writeToParcel(Bundle.java:1096) 
    at android.os.Parcel.writeBundle(Parcel.java:663) 
    at android.app.FragmentState.writeToParcel(Fragment.java:138) 
    at android.os.Parcel.writeTypedArray(Parcel.java:1191) 
    at android.app.FragmentManagerState.writeToParcel(FragmentManager.java:376) 
    at android.os.Parcel.writeParcelable(Parcel.java:1357) 
    at android.os.Parcel.writeValue(Parcel.java:1262) 
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:638) 
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313) 
    at android.os.Bundle.writeToParcel(Bundle.java:1096) 
    at android.os.Parcel.writeBundle(Parcel.java:663) 
    at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2884) 
    at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3261) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5221) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
    Caused by: java.io.NotSerializableException: com.example.laxmikantbolya.shreenamokar.Model.ProductBuyDataModel 
    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344) 
    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461) 
    at java.util.ArrayList.writeObject(ArrayList.java:648) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1033) 
    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384) 
    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461) 
    at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959) 
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360) 
    at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054) 
    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384) 
    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461) 
    at android.os.Parcel.writeSerializable(Parcel.java:1383) 
    at android.os.Parcel.writeValue(Parcel.java:1335)  
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)  
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)  
    at android.os.Bundle.writeToParcel(Bundle.java:1096)  
    at android.os.Parcel.writeBundle(Parcel.java:663)  
    at android.app.FragmentState.writeToParcel(Fragment.java:138)  
    at android.os.Parcel.writeTypedArray(Parcel.java:1191)  
    at android.app.FragmentManagerState.writeToParcel(FragmentManager.java:376)  
    at android.os.Parcel.writeParcelable(Parcel.java:1357)  
    at android.os.Parcel.writeValue(Parcel.java:1262)  
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)  
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)  
    at android.os.Bundle.writeToParcel(Bundle.java:1096)  
    at android.os.Parcel.writeBundle(Parcel.java:663)  
    at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2884)  
    at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3261)  
    at android.os.Handler.handleCallback(Handler.java:739)  
    at android.os.Handler.dispatchMessage(Handler.java:95)  
    at android.os.Looper.loop(Looper.java:135)  
    at android.app.ActivityThread.main(ActivityThread.java:5221)  
    at java.lang.reflect.Method.invoke(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:372)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)  

程序是

for (int i =0;i<buynowModelList.size();i++){ 
         ProductBuyDataModel productBuyDataModel = new ProductBuyDataModel(); 
         productBuyDataModel.setPrductId(String.valueOf(buynowModelList.get(i).getProductId())); 
         productBuyDataModel.setQuantity(String.valueOf(buynowModelList.get(i).getQuantity())); 
         productBuyDataModelArrayList.add(productBuyDataModel); 
        } 
       HashMap<String,String> hashMaploginDetail =sessionManager.getUserDetails(); 
       orderDataModel.setbuyProductDetail(productBuyDataModelArrayList); 
       orderDataModel.setUserId(hashMaploginDetail.get(SessionManager.KEY_UserIdLOGin)); 
       orderDataModel.setEmailAddress(hashMaploginDetail.get(SessionManager.KEY_EmailLOGin)); 
       orderDataModel.setPhoneno(hashMaploginDetail.get(SessionManager.KEY_PhoneNO)); 




       bundle.putSerializable("buyNowData",orderDataModel); 
       PlaceOrderAddFragment placeOrderAddFragment =new PlaceOrderAddFragment(); 
       placeOrderAddFragment.setArguments(bundle); 
       mActivity.getFragmentManager().beginTransaction().replace(R.id.buynow_frame,placeOrderAddFragment,TAG).addToBackStack(null).commit(); 

或得到它作爲

if (bundle.getSerializable("buyNowData")!=null){ 
      orderDataModel = (OrderDataModel) bundle.getSerializable("buyNowData"); 
     }                 

我recive完滿成功的數據。但在此之後,它顯示我錯誤和應用程序崩潰。

我儘可能的谷歌,但我發現只有簡單的模式通過。他們對我沒有幫助 請給我任何可以幫助我的鏈接。

+0

把意圖,你通過這個類 –

+0

我必須通過形式片段片段在同一個actvity。 – laxmikant

+0

將該代碼放在這裏 –

回答

0

對於傳遞模型對象,那麼所有的內部模型應該使用Serializable來實現。因此,請檢查您的OrderDataModel類中名爲「ProductBuyDataModel」的另一個數據模型。確保它也使用Serialzeable實現。

希望如此,這可能會有所幫助!

相關問題