Closed17
android で次の画面にクラスインスタンスを渡す
ここでやった SafeArgs を使う
percelize
すると インスタンスを渡せるようになるみたいなので、これを使って SafeArgs にインスタンスを渡すようにする
Serializable
, Parcelable
とは
役割
インスタンス情報をバイト情報に変換することで、一般のデータとしてやり取りができるようにする
両者の違い
-
Serializable
は Java の機能 -
Parcelable
は Android 独自の機能- 最適化とかされてるっぽい
- Serializable の wrapper?
データの保存先
- 責務はあくまでも
Serializable
,Parcelable
なので、保存先をメモリにするのか、ストレージにするのか、みたいなところは別依存
Serialize の仕組みの詳細
参考
- Android エンジニアの方のお話
直列化って訳は minify して一行で書けるようになるみたいな感覚と似ていそう
SafeArgs に Parcelable を渡す方法を調べる
指定できたけど、なんか build error
Unexpected error while processing layout file: fragment_detail.xml
Please file a bug on https://issuetracker.google.com/issues/new?component=192721&template=1096850 with a sample project that reproduces the problem.
補完は効くようになった
けど build したときにエラー
fragment_detail.xml
ここは safeargs 使ってるところと直接関係してない
別のエラー?
一旦 safeargs のための変更を戻してみる
remote push してないのに流れるように reset hard してしまった
戻ってきた
Type is not directly supported by 'Parcelize'. Annotate the parameter type with '@RawValue' if you want it to be serialized using 'writeValue()'
parcelable の中で parcelable じゃないクラスを含んでる的な?
(さっきと書いてること変わってないのにエラー変わったんじゃがあ)
clean & rebuild でなおることが多そう
clean & rebuild しないとすぐおかしくなる
safeargs に フルpath で指定して、build して、safeargs と同じ感じで渡せばいけた
このスクラップは2021/03/31にクローズされました