Android 不同Activity間資料的傳遞 Bundle對象的應用

來源:互聯網
上載者:User

在應用中,可能會在當跳轉到另外一個Activity的時候需要傳遞資料過去,這時就可能用Bundle對象;

在MainActivity中,有一個導航至BActivity的Intent,

Intent

複製代碼 代碼如下:{

  Intent intent = new Intent(Context context, Class<?> class);
  //new一個Bundle對象,並將要傳遞的資料匯入,Bunde相當於Map<Key,Value>結構
  Bundle bundle = new Bundle();
  bundle.putString("name","Livingstone");
  bundle.putXXX(XXXKey, XXXValue);
  //將Bundle對象添加給Intent
  intent.putExtras(bundle);
  //調用intent對應的Activity
  startActivity(intent);

}

在BActivity中,通過以下代碼擷取MainActivity所傳過來的資料

  Bundle bundle = this.getIntent().getExtras();// 擷取傳遞過來的封裝了資料的Bundle
  String name = bundle.getString("name");// 擷取name_Key對應的Value
  // 擷取值時,添加進去的是什麼類型的擷取什麼類型的值

--> bundle.getXXX(XXXKey);

       return XXXValue

上面講述的都是一般的基礎資料型別 (Elementary Data Type),當需要傳遞對象的時候,可以使該對象實現Parcelable或者是Serializable介面;

通過Bundle.putParcelable(Key,Obj)及Bundle.putSerializable(Key,Obj)方法將對象添加到Bundle中,再將此Bundle對象添加到Intent中!

在跳轉的目標頁面通過Intent.getParcelableExtra(Key)擷取實現了Parcelable的對象;

在跳轉的目標頁面通過Intent.getSerializableExtra(Key)擷取實現了Serializable的對象;

今天在研究的時候發現,Intent.putExtra(Key,Value);其實也可以傳遞資料,包括上面所講的對象!

實現Serializable介面很簡單,不再描述;

下面描述實現Parcelable介面:

複製代碼 代碼如下:public class Book implements Parcelable {
private String bookName;
private String author;

public static final Parcelable.Creator CREATOR = new Creator() {// 此處必須定義一個CREATOR成員變數,要不然會報錯!

@Override
public Book createFromParcel(Parcel source) {// 從Parcel中擷取資料,在擷取資料的時候需要通過此方法擷取對象執行個體
Book book = new Book();
book.setAuthor(source.readString());// 從Parcel讀取資料,讀取資料與寫入資料的順序一致!
book.setBookName(source.readString());
return book;
}

@Override
public Book[] newArray(int size) {
return new Book[size];
}
};

@Override
public int describeContents() {
return 0;
}

@Override// 寫入Parcel
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(author);// 將資料寫入Parcel,寫入資料與讀取資料的順序一樣!
dest.writeString(bookName);
}
}

關於Parcel,大概查閱了一下描述:

一個final類,用於寫或讀各種資料,所有的方法不過就是writeValue(Object)和read(ClassLoader)!(個人翻譯理解)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.