a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

Android 不同Activity間數據的傳遞 Bundle對象的應用

2020-04-11 12:29:07
字體:
來源:轉載
供稿:網友

在應用中,可能會在當跳轉到另外一個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

上面講述的都是一般的基本數據類型,當需要傳遞對象的時候,可以使該對象實現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)!(個人翻譯理解)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产激情在线观看 | 成人午夜精品久久久久久久蜜臀 | 91精品国产高清一区二区三区 | 在线视频国产一区 | 国产毛片a级 | 狠狠综合久久 | 国产高清在线精品一区二区三区 | www.精品| 影音先锋男人网 | 久久精品国产亚洲精品 | 嫩草网站入口 | 在线免费观看视频黄 | 国产黄色大片免费观看 | 欧美黑人xx| 亚洲人成人一区二区在线观看 | 免费超碰在线观看 | 黄色片com| 四虎成人精品永久免费av九九 | 91性高湖久久久久久久久_久久99 | 国产精品美女久久久久久久久久久 | 成人福利在线观看 | 超碰免费在线观看 | av在线一区二区三区 | 日韩性精品 | 黄色大片网站在线观看 | 日韩欧美国产精品综合嫩v 午夜精品久久久久久久久 97色在线视频 | 91视频免费版污 | 亚洲免费影院 | 色播99| 嫩草久久 | 亚洲成人av | 男人的天堂免费 | 九九九久久久 | 国内自拍偷拍视频 | 亚洲成人一区二区三区 | 久久九九 | 精品国内 | 欧美成人一区二区 | 成人小视频在线观看 | 中文字幕在线免费 | 亚洲成a|