KotlinでParcelizeを用いたオブジェクトの値渡しがおかしい

前提

KotlinでアプリSkywayを用いたアプリを制作していたところ、エラーが発生しました。
data class を用いたファイル(Struct.kt)内のクラスが原因かと思われます。

現状としては

  • intent間のオブジェクトの値渡しを実装したかった為、@Parcelizeを用いてdata classをソースコードのように作成しました。@RawValueがないとコンパイルできなかった為、書きました。
  • コンパイルして、このファイルを呼び出すことなどは成功。しかし、別画面に遷移した時になぜか以下のエラーメッセージが発生。

自分の考えとしてはエラーメッセージの6行目
at com.example.---.Struct$gameRoomInfo.writeToParcel(Unknown Source:7)
がおかしいかなと考えております。

Skywayのところがimportされているのにも関わらず、unknownとなっています。
data class で外部ライブラリの値渡しは不可能でしょうか?

ここが原因かは不明ですが、有識者の方ご教授いただけると幸いです。

実現したいこと

  • エラーなく動かしたい。

発生している問題・エラーメッセージ

2022-11-27 00:32:29.476 6935-6935/com.example.--- E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.---, PID: 6935 java.lang.IllegalArgumentException: Parcel: unknown type for value io.skyway.Peer.Peer@8efd770 at android.os.Parcel.getValueType(Parcel.java:2409) at android.os.Parcel.writeValue(Parcel.java:2308) at com.example.---.Struct$gameRoomInfo.writeToParcel(Unknown Source:7) at android.os.Parcel.writeParcelable(Parcel.java:2538) at android.os.Parcel.writeValue(Parcel.java:2439) at android.os.Parcel.writeValue(Parcel.java:2316) at android.os.Parcel.writeArrayMapInternal(Parcel.java:1265) at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1799) at android.os.Bundle.writeToParcel(Bundle.java:1362) at android.os.Parcel.writeBundle(Parcel.java:1334) at androidx.fragment.app.FragmentState.writeToParcel(FragmentState.java:159) at android.os.Parcel.writeParcelable(Parcel.java:2538) at android.os.Parcel.writeValue(Parcel.java:2439) at android.os.Parcel.writeValue(Parcel.java:2316) at android.os.Parcel.writeArrayMapInternal(Parcel.java:1265) at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1799) at android.os.Bundle.writeToParcel(Bundle.java:1362) at android.os.Parcel.writeBundle(Parcel.java:1334) at android.os.Parcel.writeValue(Parcel.java:2433) at android.os.Parcel.writeValue(Parcel.java:2323) at android.os.Parcel.writeArrayMapInternal(Parcel.java:1265) at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1799) at android.os.Bundle.writeToParcel(Bundle.java:1362) at android.os.Parcel.writeBundle(Parcel.java:1334) at android.os.Parcel.writeValue(Parcel.java:2433) at android.os.Parcel.writeValue(Parcel.java:2323) at android.os.Parcel.writeArrayMapInternal(Parcel.java:1265) at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1799) at android.os.Bundle.writeToParcel(Bundle.java:1362) at android.os.Parcel.writeBundle(Parcel.java:1334) at android.os.Parcel.writeValue(Parcel.java:2433) at android.os.Parcel.writeValue(Parcel.java:2323) at android.os.BaseBundle.dumpStats(BaseBundle.java:1872) at android.os.BaseBundle.dumpStats(BaseBundle.java:1909) at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:150) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7898) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

該当のソースコード

Kotlin

@Parcelize data class gameRoomInfo ( var peer: @RawValue Peer? = null, var remoteStream: @RawValue MediaStream? = null, var localStream: @RawValue MediaStream? = null, var mediaConnection: @RawValue MediaConnection? = null, var myUser: Struct.User? = null, ...... ) : Parcelable

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント