JAVA初心者です。
現在、地図アプリを作成しています。
Androidの縦向きで動作確認が出来ていましたが、横向き(回転)にも対応させたいと思い、保存、復元のコードを追加しました。
その際、地図上に設置したマーカーを保存するためのボタン(btnSave)を押すと、
地図が隠れて保存画面が表示されるのですが、onActivityResultが呼ばれずに下記のログを
吐き地図アプリが落ちる事象が発生しています。ちなみに保存テキストデータの読み出しも同事象となります。
本やネットで確認してみましたが原因が分からないため、ご教示のほど宜しくお願いいたします。
public class SubActivity extends FragmentActivity implements OnMapReadyCallback { @State Marker[] markerSv = new Marker[***]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Icepick.restoreInstanceState(this, savedInstanceState); // 復元 ~~~ 省略 ~~~ } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Icepick.saveInstanceState(this, outState); // 保存 } public void btnSave_onClick(View view) { if (markerSv[0] != null) { saveFlg = true; Intent i = new Intent(Intent.ACTION_CREATE_DOCUMENT); i.setType("text/plain"); i.putExtra(Intent.EXTRA_TITLE, "map.txt"); startActivityForResult(i, REQUEST_SAVE); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); ~~~ 省略 ~~~ }
■エラーログ
06-09 10:02:34.459 27708-27708/com.*** D/AndroidRuntime: Shutting down VM
06-09 10:02:34.489 27708-27708/com.*** E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.***, PID: 27708
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = [Lcom.google.android.gms.maps.model.Marker;)
at android.os.Parcel.writeSerializable(Parcel.java:1766)
at android.os.Parcel.writeValue(Parcel.java:1714)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:782)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1506)
at android.os.Bundle.writeToParcel(Bundle.java:1181)
at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:4617)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4003)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:251)
at android.app.ActivityThread.main(ActivityThread.java:6572)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.io.NotSerializableException: com.google.android.gms.maps.model.Marker
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1233)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1427)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1223)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
at android.os.Parcel.writeSerializable(Parcel.java:1761)
at android.os.Parcel.writeValue(Parcel.java:1714)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:782)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1506)
at android.os.Bundle.writeToParcel(Bundle.java:1181)
at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:4617)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4003)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:251)
at android.app.ActivityThread.main(ActivityThread.java:6572)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
以上、宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー