在Activity中通過Bundle傳遞自定義數據類型


在Android開發中,有時候需要從一個Activity中傳遞數據到另一個Activity中,在Bundle中已經封裝好了簡單數據類型,例如String ,int ,float等。但是如果我們想要傳遞一個復雜的數據類型,比如一個Book對象,該怎么辦呢?
仔細的看了一下Bundle中的方法,其中有一個是putSerializable()方法,Serializable對象是一個可恢復對象接口,我們只需要讓Book對象實現Serializable接口,就可以使用Bundle.putSerializable()方法傳遞Book對象了。廢話不多說了,現將代碼貼上:
Book類:
package com.bundletest.model.fneg;

import java.io.Serializable;

/**
*@Copyright:Copyright (c) 2008 - 2100
*@Company:Sagret
*@Author:fengcunhan fengcunhan@gmail.com
*@Package:com.bundletest.model.fneg
*@FileName:Book.java
*@Time:2010-12-19
*@User:feng
*/
public class Book implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;

private String name;
private String id;
private String author;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}

}

實例化Book類,得到Book對象book以及設置成員變量:
if(TextUtils.isEmpty(bookName)||TextUtils.isEmpty(author)||TextUtils.isEmpty(id)){
Toast.makeText(AndroidBundleActivity.this, "輸入框不能為空", Toast.LENGTH_SHORT).show();
}else{
Book book=new Book();
book.setName(bookName);
book.setAuthor(author);
book.setId(id);
Intent intent=new Intent(AndroidBundleActivity.this,RecieveActivity.class);
Bundle bundle=new Bundle();
bundle.putSerializable("book", book);
intent.putExtras(bundle);
startActivity(intent);
}

在另一個Activity中獲取傳遞過來的book對象,並顯示:
Intent intent=this.getIntent();
Bundle bundle=intent.getExtras();

Book book=(Book)bundle.getSerializable("book");
nameText.setText("書名:"+book.getName());
authorText.setText("作者:"+book.getAuthor());
idText.setText("ID:"+book.getId());


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM