2013年4月3日水曜日

Android ParcelでString[]を読んだり書いたり

AndroidのJavaオブジェクトのシリアライズ機構ParcleにStringの配列を読み書きする方法。

メソッド名の対応からしてwriteStringArray()で書いたものをreadStringArray()で読み込むのだろうと思っていたが読むほうはcreateStringArray()になるようである。 以下のような感じになるらしい。

  1. public class MyObj implements Parcelable {  
  2.   
  3.   private String[] texts;  
  4.   
  5.   // 読むほう  
  6.   public MyObj(Parcel in) {  
  7.     texts = in.createStringArray();  
  8.   }  
  9.   
  10.   // 書くほう  
  11.   @Override  
  12.   public void writeToParcel(Parcel out, int flags) {  
  13.     out.writeStringArray(texts);  
  14.   }  
  15.   
  16.   ...  
  17. }  

readStringArray()でも読み込めるようだが、書き込んだ長さと同じ配列をあらかじめ準備して引数に指定するらしい。 長さが決まってない配列に使うのは面倒そうだし、nullは扱えなさそうである。 固定長の配列を連続読み込みするような場合には使えそうだが、それ以外はあまり出番が無いのではと思う。

0 件のコメント:

コメントを投稿