編輯:關於Android編程
上一篇講了activity的創建和啟動,這一篇,我們來講講activity的數據傳遞
activity之間的數據傳遞,這裡主要介紹的是activity之間簡單數據的傳遞,直接用bundle傳遞基本數據類型的數據。還有一種數據類型是parcelable和serialable
用bundle 傳遞數據有兩種情況,這篇文章就分別從兩個方面說明一下。
一、利用bundle傳遞基本數據類型
1、啟動時傳遞數據,使用intent的put方法,將數據寫入bundle中,然後startActivity(intent)就可以將數據到底到目標activity中去
AActivity中傳遞數據:
Intent intent = new Intent(AActivity.this, BActivity.class);
intent.putExtra("name", "android");
intent.putExtra("age", 20);
intent.putExtra("isStudent", true);
startActivity(intent);BActivity中接收數據: 目標activity中通過getIntent()方法獲取Intent 對象,然後就可以通過getString getInt getBoolean等方法獲取到傳遞過來的基本數據類型的數據
String name = getIntent().getStringExtra("name");
int age = getIntent().getIntExtra("age", 0);
Boolean isStudent = getIntent().getBooleanExtra("isStudent", false);
運行結果:


2、關閉時返回數據
AActivity中啟動activity<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">Intent intent = new Intent(AActivity.this, BActivity.class); startActivityForResult(intent, 1);BActivity中關閉activity並返回數據到AActivity
B中要做的工作有將要返回的數據放入intent中,然後設置返回結果碼setResult(resultCode)一般結果碼都是Activity.RESULT_OK,然後調用finish方法,關閉activity,返回到之前的activity
Intent intent = new Intent();
intent.putExtra("name", "這是bactivity關閉傳遞的數據");
setResult(Activity.RESULT_OK,intent);
finish();@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case 100:
resultTxt.setText(data.getStringExtra("result"));
break;
default:
break;
}
}
}二、利用parcelabel和serializable傳遞復雜數據類型
1、parcelable傳遞數據
如果要傳遞自定義的數據類型,那麼將自定義數據類型實現parcelbale接口即可。傳遞方法如下:
Person p = new Person("趙六", 24);
intent.putExtra("p", p); // 把Person當作Parcelable傳遞
startActivity(intent); 在BActivity中取出數據:
Person p = intent.getParcelableExtra("p");
otherTV.setText(p.toString());2、serializable傳遞數據
如果要傳遞自定義的數據類型,那麼將自定義數據類型實現serializable接口即可。傳遞方法如下:在要傳遞的對象類中實現兩個方法describeContents writeToParcel
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) { // 怎麼把Person寫到Parcel
dest.writeString(name); // 把成員變量寫進去
dest.writeInt(age);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public Person createFromParcel(Parcel source) { // 怎麼從Parcel還原Person
return new Person(source.readString(), source.readInt()); // 從Parcel中讀取數據, 創建Person
}
public Person[] newArray(int size) { // 怎麼獲取數組
return new Person[size];
}
};
// 綁定服務的時候, 傳遞參數時, 只能用Parcelable
新聞客戶端06 - 完善ListView頭部視圖
1.我們之前已經用scrollView實現了輪播圖效果因為需要定時器,所以我們要cd到當前項目根目錄下安裝這個類庫:npm i react-timer-mixin --s
Android實現滑動刪除操作(PopupWindow)
參考Android仿騰訊QQ實現滑動刪除這篇文章進行學習,文章實現的功能是:在ListView的Item上從右向左滑時,出現刪除按鈕,點擊刪除按鈕把Item刪除,效果看過
Andorid4.x 流氓式屏蔽HOME鍵
應用項目需要要屏蔽HOME鍵。項目本身的要求是讓按下HOME鍵後程序不做任何響應,就像按下返回鍵一樣在onBackPressed 方法中直接return啥都
Android布局案例之人人android九宮格
人人android是人人網推出的一款優秀的手機應用軟件,我們在使用的時候發現他的首頁布局是九宮格模式的,讓人覺得很別致,因為現在很多的 android軟件很少使用這種布局