2017-05-12 15 views
0

カスタムオブジェクトのarraylistをアクティビティから別のものに渡そうとしています。 arrayListには非常に単純なオブジェクトが含まれています。ここにクラスがあります:カスタムシリアル化可能オブジェクトの配列リストのインテントエラー

public class MaPin implements Serializable{ 
    private Location pLocation; 
    private String pMessage; 

    public MaPin(Location location, String message){ 
     this.pLocation = location; 
     this.pMessage = message; 
    } 

    public Location getpLocation() {return this.pLocation; } 

    public String getpMessage(){ return this.pMessage; } 
} 

ご覧のとおり、それはシリアライズ可能です。その後、この投稿:Pass arraylist of user defined objects to Intent androidによると、Data Wrapperを使うと便利です。だから、私は1つを使用した:

public class DataWrapper implements Serializable { 

    private ArrayList<MaPin> mMapArr; 

    public DataWrapper(ArrayList<MaPin> data) { this.mMapArr = data; } 

    public ArrayList<MaPin> getmMapArr() { return this.mMapArr; } 
} 

これもシリアル化を実装しています。

私は元の活動にこれを使用する別の活動からのデータを渡すために:

Intent intent = new Intent(MainActivity.this, HistoryActivity.class); 
intent.putExtra(EXTRA_MESSAGE, new DataWrapper(mMapinHistory)); 
startActivity(intent); 

mMapinHistoryがMAPIN `のArrayListあるところ。 および受信する私は、先の活動にこれを使用する:あなたが見ることができるよう

Intent intent = getIntent(); 
DataWrapper wp = (DataWrapper) getIntent().getSerializableExtra(MainActivity.EXTRA_MESSAGE); 
mPositionHistory = wp.getmMapArr(); 

だから私は、私はポストに言及しているもの尊敬と思います。しかし、私はまだ、次のエラーがあります。

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = ovh.trimard.locapp.DataWrapper) 

をそしてDataWrapperとMAPIN両方がSerializableを実装以来、私は理由を知りません!

私は間違っていますか?要求されたよう

EDIT

完全なスタックトレース:

05-12 15:11:32.370 2531-2531/ovh.trimard.locapp E/AndroidRuntime: FATAL EXCEPTION: main 
                    Process: ovh.trimard.locapp, PID: 2531 
                    java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = ovh.trimard.locapp.DataWrapper) 
                     at android.os.Parcel.writeSerializable(Parcel.java:1527) 
                     at android.os.Parcel.writeValue(Parcel.java:1475) 
                     at android.os.Parcel.writeArrayMapInternal(Parcel.java:724) 
                     at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1408) 
                     at android.os.Bundle.writeToParcel(Bundle.java:1157) 
                     at android.os.Parcel.writeBundle(Parcel.java:764) 
                     at android.content.Intent.writeToParcel(Intent.java:8687) 
                     at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3082) 
                     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1518) 
                     at android.app.Activity.startActivityForResult(Activity.java:4225) 
                     at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50) 
                     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79) 
                     at android.app.Activity.startActivityForResult(Activity.java:4183) 
                     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859) 
                     at android.app.Activity.startActivity(Activity.java:4522) 
                     at android.app.Activity.startActivity(Activity.java:4490) 
                     at ovh.trimard.locapp.MainActivity$3.onClick(MainActivity.java:152) 
                     at android.view.View.performClick(View.java:5637) 
                     at android.view.View$PerformClick.run(View.java:22429) 
                     at android.os.Handler.handleCallback(Handler.java:751) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:154) 
                     at android.app.ActivityThread.main(ActivityThread.java:6119) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
                    Caused by: java.io.NotSerializableException: android.location.Location 
                     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1224) 
                     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1584) 
                     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1549) 
                     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472) 
                     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218) 
                     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
                     at java.util.ArrayList.writeObject(ArrayList.java:734) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:977) 
                     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1536) 
                     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472) 
                     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218) 
                     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1584) 
                     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1549) 
                     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472) 
                     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218) 
                     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
                     at android.os.Parcel.writeSerializable(Parcel.java:1522) 
                     at android.os.Parcel.writeValue(Parcel.java:1475)  
                     at android.os.Parcel.writeArrayMapInternal(Parcel.java:724)  
                     at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1408)  
                     at android.os.Bundle.writeToParcel(Bundle.java:1157)  
                     at android.os.Parcel.writeBundle(Parcel.java:764)  
                     at android.content.Intent.writeToParcel(Intent.java:8687)  
                     at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3082)  
                     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1518)  
                     at android.app.Activity.startActivityForResult(Activity.java:4225)  
                     at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50)  
                     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)  
                     at android.app.Activity.startActivityForResult(Activity.java:4183)  
                     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)  
                     at android.app.Activity.startActivity(Activity.java:4522)  
                     at android.app.Activity.startActivity(Activity.java:4490)  
                     at ovh.trimard.locapp.MainActivity$3.onClick(MainActivity.java:152)  
                     at android.view.View.performClick(View.java:5637)  
                     at android.view.View$PerformClick.run(View.java:22429)  
                     at android.os.Handler.handleCallback(Handler.java:751)  
                     at android.os.Handler.dispatchMessage(Handler.java:95)  
                     at android.os.Looper.loop(Looper.java:154)  
                     at android.app.ActivityThread.main(ActivityThread.java:6119)  
                     at java.lang.reflect.Method.invoke(Native Method)  
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  
+1

質問を編集し、エラーメッセージだけでなくJavaスタックトレース全体を投稿してください。 – CommonsWare

+0

ロケーションクラスはSerialisableを実装していますか? –

+0

私は場所について知らない、それは私がそれを変更しなかったdefautlクラスです。 (私はJavaとAndroidには本当に新しいです)。 Locationはシリアライズ可能であるべきだと思いますか? –

答えて

2

Locationクラスが適切にすべてのあなたの内側のクラスに実装する必要があるパーセルデータのためにシリアライズ

Caused by: java.io.NotSerializableException: android.location.Location

を実施していません分割可能/直列化可能

+0

あなたの答えをありがとう、明らかに場所がシリアライズ可能ではない、私はそれの周りに道を見つける必要があります.. –

+0

場所は、単に緯度/経度を抽出し、カスタムフィールドに割り当てるよりもGoogleマップの場所です –

+0

ありがとう、それは私は何をするつもりです!サポートしてくれてありがとう! –

関連する問題