iOS開発者のAndroid開発入門その8(値渡し〜いろんな型で渡したい〜)

botman3 Android

はじめに

今までふわっとやってきた画面間の値渡しについて書こうと思います!Bundle ってなんやねん?とか SerializableParcelable ってなんやねん?てことについて記載します。

Bundle

Weblio で意味を調べると下記。たぶんか「包み」、「かたまり」あたりが近いような気がする。

(通例真ん中をくくった)束、管束(かんそく)、包み、かたまり、一団、大金

Activity の値保持や Activity 間の値渡し、Fragment への値渡しなどのときに使われる。

下記のように色々な値を扱える

なんかもっと色々入れれそう(下記参考)

Serializable

String, Int などを渡すのは簡単ですが独自のオブジェクトを渡す場合はどうすればいいのかというと Serializable を使うと簡単にできます。Srializable は下記のように空の interface なのでこいつを対象のクラスに適応するだけで使えます。

実装はこんな感じ

これだけ!とっても簡単!!

Serializable 詳細は下記参考
Androidデベロッパー:Serializable

Parcelable

Parcelable も独自のオブジェクトを渡す場合に使えますが Srializable よりも結構複雑です。。。

めっちゃ書かないといけない!あと下記サイトにあるように null 許容にすると色々めんどくさいらしい。。。
【android】まれにレビューで指摘するParcelableについて

Parcelable 詳細は下記参考
Androidデベロッパー:Parcelable

SerializableとParcelableの使い分け

結局 SerializableParcelable どっちを使えばいいんだ?となりますが画面間で値渡しをしたい!とかアプリ内のみであれば Serializable でいいかと思います。Parcelable はアプリ間でも値を渡すときに使えばいいと思います。

でもぶっちゃけアプリ間で値をやり取りする場合はアプリ間の Parcelable のカスタムクラスの実装を揃えないといけないのであまり使い勝手は良くないように思います。。。

おわりに

なんとなく Serializablejava.io.Serializable にあって、Parcelableandroid.os.Parcelable にあったので Android では Parcelable 使った方がいいのかなと思いましたがきっとそんなことはないです!

私の結論としては Parcelable はなんかめんどくさいので全部 Serializable でいいと思います!!

参考

コメント

タイトルとURLをコピーしました