編輯:關於Android編程
在應用中,可能會在當跳轉到另外一個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)!(個人翻譯理解)
前言最近我跟自定義View槓上了,甚至說有點上瘾到走火入魔了。身為菜鳥的我自然要查閱大量的資料,學習大神們的代碼,這不,前兩天正好在郭神在微信公眾號裡推送一片自定義控件的
最近開始接觸到Andorid TV編程,發現目前這方便的資料與比較還比較少,但現在隨著產品與用戶的升級,涉及到Android TV與 Android Watch的編程離我
現在是2014-07-16 下午15:27. 好久沒寫過東西,突然間靈感噴發想寫點東西(其實是剛剛弄好了一個棘手的問題,自豪中。。呵呵呵呵 我牛掰)。廢話不多說,進入正題
使用ViewPager作為一個頁面進行切換,裡面可以存放很多View,但有時在操作View時不小心滑動一下就有可能跳到下一頁,這並不是我們想要的,這裡就需要重寫ViewP