編輯:關於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.CreatorCREATOR = 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
1.我們之前已經用scrollView實現了輪播圖效果因為需要定時器,所以我們要cd到當前項目根目錄下安裝這個類庫:npm i react-timer-mixin --s
參考Android仿騰訊QQ實現滑動刪除這篇文章進行學習,文章實現的功能是:在ListView的Item上從右向左滑時,出現刪除按鈕,點擊刪除按鈕把Item刪除,效果看過
應用項目需要要屏蔽HOME鍵。項目本身的要求是讓按下HOME鍵後程序不做任何響應,就像按下返回鍵一樣在onBackPressed 方法中直接return啥都
人人android是人人網推出的一款優秀的手機應用軟件,我們在使用的時候發現他的首頁布局是九宮格模式的,讓人覺得很別致,因為現在很多的 android軟件很少使用這種布局