2014年7月2日 星期三

[Android] Activity之間交換Object

Activity之間要交換物件,可以透過 java.io.Serializable android.os.Parcelable。

網路世界裡的溝通,是透過各式各樣的Protocol來協助,送方根收定均定義好資料流的格式,收方依規則傳遞,送方就可以依規則反解回來。

Serializable就如同資料流概念,送方將物件透過定義好的格式進行分解傳遞,收方則可以組回成物件來直接使用,十分方便。可惜這方法有個缺陷是,基本上要相同語言才有相同的語言,才能這樣執行(每家語言序列化的方式都不一樣)。

  •  Serializable 
    1. Implements Serializable
      public class Result implements java.io.Serializable {
            private int x= 0;
           public void setX(int x)
            {
              this.x = x;
            }
            public int getX()
            {
              return x;
            }
      }
    2. 傳遞的 Activity
    3. Intent intent = new Intent();
              Intent intent = new Intent();
              Bundle bundle = new Bundle();
              Result result = new Result();
              result.setX(5);
              bundle.putSerializable("Result", result);
              intent.putExtras(bundle);
              intent.setClass(FromActivity.this, ToActivity.class);
              startActivity(intent);

    4. 接收的Activity
    5. Result result = getIntent().
                                    getExtras().getSerializable("Result");
      result.getX();

Reference:
[1] Android Intent&Bundle 傳遞資料(包含傳遞自定義物件)
[2] Serializable序列化
[3] Java 序列化/反序列化 (Serialization/Deserialization)

沒有留言:

張貼留言