Android零基础入门第83节:Activity间数据传递方法汇总
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
? ?在Activity間傳遞的數(shù)據(jù)一般比較簡(jiǎn)單,但是有時(shí)候?qū)嶋H開(kāi)發(fā)中也會(huì)傳一些比較復(fù)雜的數(shù)據(jù),本節(jié)一起來(lái)學(xué)習(xí)更多Activity間數(shù)據(jù)的傳遞。
?
?
一、常用數(shù)據(jù)類型
?
????在前面幾節(jié)我們只學(xué)習(xí)了一些常用類型的數(shù)據(jù)傳遞,主要是以下這些重載方法:
-
putExtra(String name, boolean value)
-
putExtra(String name, byte value)
-
putExtra(String name, char value)
-
putExtra(String name, short value)
-
putExtra(String name, int value)
-
putExtra(String name, long value)
-
putExtra(String name, float value)
-
putExtra(String name, double value)
-
putExtra(String name, String value)
-
putExtra(String name, CharSequence value)
-
putExtras(Intent src)
-
putExtras(Bundle extras)
-
putExtra(String name, Bundle value)
-
getBooleanExtra(String name, boolean defaultValue)
-
getByteExtra(String name, byte defaultValue)
-
getCharExtra(String name, char defaultValue)
-
getShortExtra(String name, short defaultValue)
-
getIntExtra(String name, int defaultValue)
-
getLongExtra(String name, long defaultValue)
-
getFloatExtra(String name, float defaultValue)
-
getDoubleExtra(String name, double defaultValue)
-
getStringExtra(String name)
-
getCharSequenceExtra(String name)
-
getExtras()
-
getBundleExtra(String name)
????可以發(fā)現(xiàn)主要包括boolean、byte、char、short、int、long、float、double、String、CharSequence幾個(gè),當(dāng)然也可以先將數(shù)據(jù)打包為Bundle或Intent對(duì)象再傳遞。
?
?
二、數(shù)組、列表類型數(shù)據(jù)
?
????然而在實(shí)際開(kāi)發(fā)中經(jīng)常會(huì)遇見(jiàn)以上常用類型的數(shù)組或列表的組合型數(shù)據(jù),其實(shí)也非常簡(jiǎn)單。
1、數(shù)組
????認(rèn)真的同學(xué)可能已經(jīng)發(fā)現(xiàn)了,每一個(gè)基本數(shù)據(jù)類型都有對(duì)應(yīng)數(shù)組數(shù)據(jù)的重載方法,分別如下:
-
putExtra(String name, boolean[] value)
-
putExtra(String name, byte[] value)
-
putExtra(String name, short[] value)
-
putExtra(String name, char[] value)
-
putExtra(String name, int[] value)
-
putExtra(String name, long[] value)
-
putExtra(String name, float[] value)
-
putExtra(String name, double[] value)
-
putExtra(String name, String[] value)
-
putExtra(String name, CharSequence[] value)
-
getBooleanArrayExtra(String name)
-
getByteArrayExtra(String name)
-
getShortArrayExtra(String name)
-
getCharArrayExtra(String name)
-
getIntArrayExtra(String name)
-
getLongArrayExtra(String name)
-
getFloatArrayExtra(String name)
-
getDoubleArrayExtra(String name)
-
getStringArrayExtra(String name)
-
getCharSequenceArrayExtra(String name)
???putExtra()方法的參數(shù)簡(jiǎn)單替換為數(shù)組類型的即可,然后使用數(shù)組的專用方法獲取,使用起來(lái)也非常簡(jiǎn)單。
?
2、列表?
????在傳遞列表型數(shù)據(jù)的時(shí)候稍微有一些不同了,Intent還提供了以下這幾個(gè)重載方法:
-
putIntegerArrayListExtra(String name, ArrayList<Integer> value)
-
putStringArrayListExtra(String name, ArrayList<String> value)
-
putCharSequenceArrayListExtra(String name, ArrayList<CharSequence> value)
-
getIntegerArrayListExtra(String name)
-
getStringArrayListExtra(String name)
-
getCharSequenceArrayListExtra(String name)
????從以上幾個(gè)方法可以知道,Intent自帶傳遞Integer、String、CharSequence三種類型的列表數(shù)據(jù),如果需要傳遞到額數(shù)據(jù)是這幾種類型,或能夠轉(zhuǎn)換為這幾種類型,那么數(shù)據(jù)的傳遞也變得很順利了。
?
?
三、對(duì)象
?
????前面學(xué)習(xí)的幾個(gè)方法使用起來(lái)還是比較簡(jiǎn)單的,但是會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,以上學(xué)習(xí)的方法無(wú)法傳輸對(duì)象(如圖片)、對(duì)象的數(shù)組或集合,那就需要用到以下這些方法了。
????intent還有以下這些重載方法:
-
putExtra(String name, Serializable value)
-
putExtra(String name, Parcelable value)
-
putExtra(String name, Parcelable[] value)
-
putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)
-
getSerializableExtra(String name)
-
getParcelableExtra(String name)
-
getParcelableArrayExtra(String name)
-
getParcelableArrayListExtra(String name)
????可能你已經(jīng)發(fā)現(xiàn)了,這里提到的Serializable類型和Parcelable類型數(shù)據(jù)到底是什么呢?接下來(lái)分別來(lái)學(xué)習(xí)。
1、序列化對(duì)象Serializable
????Serializable接口是啟用其序列化功能的接口,實(shí)現(xiàn)java.io.Serializable 接口的類是可序列化的,沒(méi)有實(shí)現(xiàn)此接口的類將不能使它們的任一狀態(tài)被序列化或逆序列化(如果不懂序列化,建議復(fù)習(xí)鞏固Java部分的序列化知識(shí)模塊)。
????Serializable實(shí)現(xiàn)序列化的方法也很簡(jiǎn)單,將需要序列化的類實(shí)現(xiàn)Serializable接口,Serializable接口中沒(méi)有任何方法,只需在類中指定serialVersionUID的值,該值可以任意指定一個(gè)值??梢岳斫鉃橐粋€(gè)標(biāo)記,即表明這個(gè)類可以序列化。
????假如需要使用Intent傳遞一個(gè)Person對(duì)象,就先要將其序列化,如下示例代碼:
package com.jinyu.cqkxzsxy.android.activity.equipmentupdate.entity;import java.io.Serializable;/*** @創(chuàng)建者 鑫鱻* @描述 Android零基礎(chǔ)入門到精通系列教程* 首發(fā)微信公眾號(hào)分享達(dá)人秀(ShareExpert)*/ public class Person implements Serializable {private static final long serialVersionUID = 1L; // 序列化IDprivate String name; // 姓名private int age; // 年齡public Person() {this.name = "未知";this.age = 18;}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} }????然后即可調(diào)用前面的put和get方法來(lái)傳遞復(fù)雜對(duì)象數(shù)據(jù)了。
?
2、序列化對(duì)象Parcelable?
? ? 由于Serializable在序列化的時(shí)候會(huì)產(chǎn)生大量的臨時(shí)變量,從而引起頻繁的GC,會(huì)影響持續(xù)性能。在使用內(nèi)存的時(shí)候,Parcelable比Serializable性能高,所以推薦使用Parcelable。
????實(shí)現(xiàn)Parcelable接口稍微復(fù)雜一些,但效率更高,推薦用這種方法提高性能。實(shí)現(xiàn)步驟如下:
將需要序列化的類實(shí)現(xiàn)Parcelable接口。
重寫(xiě)writeToParcel方法,將對(duì)象序列化為一個(gè)Parcel對(duì)象。
重寫(xiě)describeContents方法,描述內(nèi)容接口,默認(rèn)返回0。實(shí)例化靜態(tài)內(nèi)部對(duì)象CREATOR實(shí)現(xiàn)接口Parcelable.Creator。其中public static final一個(gè)都不能少,內(nèi)部對(duì)象CREATOR的名稱也不能改變,必須全部大寫(xiě)。需重寫(xiě)本接口中的兩個(gè)方法:
-
createFromParcel(Parcel in) 實(shí)現(xiàn)從Parcel容器中讀取傳遞數(shù)據(jù)值,封裝成Parcelable對(duì)象返回邏輯層。
-
newArray(int size) 創(chuàng)建一個(gè)類型為T,長(zhǎng)度為size的數(shù)組,僅一句話即可(return new T[size]),供外部類反序列化本類數(shù)組使用。
????接下來(lái)將上面的Person類進(jìn)行改造,代碼如下:
package com.jinyu.cqkxzsxy.android.activity.equipmentupdate.entity;import android.os.Parcel; import android.os.Parcelable;/*** @創(chuàng)建者 鑫鱻* @描述 Android零基礎(chǔ)入門到精通系列教程* 首發(fā)微信公眾號(hào)分享達(dá)人秀(ShareExpert)*/ public class Person implements Parcelable {private String name; // 姓名private int age; // 年protected Person(Parcel in) {// 在讀取Parcel容器里的數(shù)據(jù)時(shí),必須按成員變量聲明的順序讀取數(shù)據(jù),不然會(huì)出現(xiàn)獲取數(shù)據(jù)出錯(cuò)name = in.readString();age = in.readInt();}public static final Creator<Person> CREATOR = new Creator<Person>() {// 再通過(guò)createFromParcel將Parcel對(duì)象映射成原對(duì)象@Overridepublic Person createFromParcel(Parcel in) {return new Person(in);}// 供外部類反序列化本類數(shù)組使用@Overridepublic Person[] newArray(int size) {return new Person[size];}};// 內(nèi)容接口描述,默認(rèn)返回0即可@Overridepublic int describeContents() {return 0;}// 按照聲明順序打包數(shù)據(jù)到Parcel對(duì)象中,既將數(shù)據(jù)打包到Parcel容器中@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeString(name);dest.writeInt(age);}public Person() {this.name = "未知";this.age = 18;}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} }? ? 然后即可調(diào)用前面的put和get方法來(lái)傳遞復(fù)雜對(duì)象數(shù)據(jù)了,當(dāng)然也可以是對(duì)象的數(shù)組或列表型數(shù)據(jù)。
????在使用中需要注意的是,Parcelable不能使用在要將數(shù)據(jù)存儲(chǔ)在磁盤(pán)上的情況,因?yàn)镻arcelable不能很好的保證數(shù)據(jù)的持續(xù)性在外界有變化的情況下。盡管Serializable效率低點(diǎn),但此時(shí)還是建議使用Serializable。
?
?
四、全局Application
?
????如果需要將一個(gè)對(duì)象在多個(gè)Activity之間傳遞,或者要連續(xù)傳遞好幾層,這種情況下如果使用以上方法就需要重復(fù)多次,使用起來(lái)就特別別扭,這種情況就可以考慮使用全局Application。
????Android系統(tǒng)在每個(gè)程序運(yùn)行的時(shí)候都會(huì)創(chuàng)建一個(gè)Application對(duì)象,而且只會(huì)創(chuàng)建一個(gè),所以Application 是單例(singleton)模式的一個(gè)類,而且Application對(duì)象的生命周期是整個(gè)程序中最長(zhǎng)的,他的生命周期等于這個(gè)程序的生命周期。如果想存儲(chǔ)一些值,使用 Application就需要自定義類實(shí)現(xiàn)Application類,然后在AndroidManifest.xml中使用我們自定義的Application 而非系統(tǒng)默認(rèn)的。
????這里簡(jiǎn)單使用一個(gè)示例來(lái)學(xué)習(xí),這里簡(jiǎn)化為全局保存一個(gè)狀態(tài)值,可以方便在各Activity中進(jìn)行傳遞。首先自定義Application類,代碼如下:
package com.jinyu.cqkxzsxy.android.activity.equipmentupdate;import android.app.Application;/*** @創(chuàng)建者 鑫鱻* @描述 Android零基礎(chǔ)入門到精通系列教程* 首發(fā)微信公眾號(hào)分享達(dá)人秀(ShareExpert)*/ public class MyApplication extends Application {private int state;public int getState() {return state;}public void setState(int state) {this.state = state;} }????然后在AndroidManifest.xml中聲明,為application標(biāo)簽添加android:name屬性,代碼如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.jinyu.cqkxzsxy.android.activity.equipmentupdate"><applicationandroid:name=".MyApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application> </manifest>????最后在需要使用定義的全局變量的地方即可調(diào)用,核心代碼如下:
package com.jinyu.cqkxzsxy.android.activity.equipmentupdate;import android.os.Bundle; import android.support.v7.app.AppCompatActivity;public class TestActivity extends AppCompatActivity {protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_shop);// ...MyApplication app = (MyApplication) getApplicationContext();// 保存數(shù)據(jù)app.setState(1);// ...// 讀取數(shù)據(jù)int state = app.getState();// ...} }????這樣就非常方便的在各Activity之間進(jìn)行數(shù)據(jù)傳遞了。如果想要在整個(gè)應(yīng)用程序中任何位置都能使用,可以對(duì)MyApplication類進(jìn)行適當(dāng)?shù)母脑?#xff0c;這里不做過(guò)多說(shuō)明。
????但是需要注意的是,當(dāng)由于某些原因(比如系統(tǒng)內(nèi)存不足),我們的app會(huì)被系統(tǒng)強(qiáng)制殺死,此時(shí)再次點(diǎn)擊進(jìn)入應(yīng)用時(shí),系統(tǒng)會(huì)直接進(jìn)入被殺死前的那個(gè)界面,制造一種從來(lái)沒(méi)有被殺死的假象。那么問(wèn)題來(lái)了,系統(tǒng)強(qiáng)制停止了應(yīng)用,進(jìn)程死了,那么再次啟動(dòng)時(shí)Application自然新的,那里邊的數(shù)據(jù)自然木有啦,如果直接使用很可能報(bào)空指針或者其他錯(cuò)誤。
????所以在使用時(shí)一定要做好非空判斷,如果數(shù)據(jù)為空可以考慮邏輯上讓?xiě)?yīng)用直接返回到最初的Activity。
?
?
五、單例模式
?
????上面的Application就是基于單例的,單例模式的特點(diǎn)就是可以保證系統(tǒng)中一個(gè)類有且只有一個(gè)實(shí)例。
????這里做一個(gè)簡(jiǎn)單的示例,如定義一個(gè)數(shù)據(jù)持有者類,代碼如下:
package com.jinyu.cqkxzsxy.android.activity.equipmentupdate.entity;/*** @創(chuàng)建者 鑫鱻* @描述 Android零基礎(chǔ)入門到精通系列教程* 首發(fā)微信公眾號(hào)分享達(dá)人秀(ShareExpert)*/public class DataHolder {private String data;public String getData() {return data;}public void setData(String data) {this.data = data;}private static final DataHolder holder = new DataHolder();public static DataHolder getInstance() {return holder;} }????然后在使用的地方即可直接調(diào)用,如下所示:
? ?// 更新數(shù)據(jù)
? ?DataHolder.getInstance().setData(data);
?
? ?// 獲取數(shù)據(jù)
? ?Stringdata=DataHolder.getInstance().getData();
????這樣使用起來(lái)也非常簡(jiǎn)單。
?
?
六、靜態(tài)變量
?
????這個(gè)可以直接在Activity中完成單獨(dú)一個(gè)數(shù)據(jù)結(jié)構(gòu),和單例差不多。
????這里將上面的單例模式類簡(jiǎn)單修改,代碼如下:
package com.jinyu.cqkxzsxy.android.activity.equipmentupdate.entity;/*** @創(chuàng)建者 鑫鱻* @描述 Android零基礎(chǔ)入門到精通系列教程* 首發(fā)微信公眾號(hào)分享達(dá)人秀(ShareExpert)*/public class DataHolder {private static String data;public static String getData() {return data;}public static void setData(String strData) {data = strData;} }????這樣就可以在啟動(dòng)Activity之前設(shè)置數(shù)據(jù),新的Activity中獲取數(shù)據(jù)。
? ?// 更新數(shù)據(jù)
? ?DataHolder.setData(data);
?
? ?// 獲取數(shù)據(jù)
? ?Stringdata=DataHolder.getData();
????需要注意的是,如果數(shù)據(jù)很大很多(如bitmap),處理不當(dāng)是很容易導(dǎo)致內(nèi)存泄露或者內(nèi)存溢出的,可以考慮使用WeakReferences 將數(shù)據(jù)包裝起來(lái)。
????除了以上介紹的幾種方式,還可以使用持久化數(shù)據(jù)等方法,這里先不做過(guò)多介紹,在后續(xù)的學(xué)習(xí)中會(huì)陸續(xù)接觸到。
?
????今天就先到這里,如果有問(wèn)題歡迎留言一起探討,也歡迎加入Android零基礎(chǔ)入門技術(shù)討論微信群,共同成長(zhǎng)!
????如果該系列分享對(duì)你有幫助,就動(dòng)動(dòng)手指關(guān)注、點(diǎn)贊、留言吧,你的互動(dòng)就是對(duì)我最大的鼓勵(lì)!
? ?此文章版權(quán)為微信公眾號(hào)分享達(dá)人秀(ShareExpert)——鑫鱻所有,若需轉(zhuǎn)載請(qǐng)聯(lián)系作者授權(quán),特此聲明!
?
往期總結(jié)回顧:
Android零基礎(chǔ)入門第1節(jié):Android的前世今生
Android零基礎(chǔ)入門第2節(jié):Android 系統(tǒng)架構(gòu)和應(yīng)用組件那些事
Android零基礎(chǔ)入門第3節(jié):帶你一起來(lái)聊一聊Android開(kāi)發(fā)環(huán)境
Android零基礎(chǔ)入門第4節(jié):正確安裝和配置JDK, 高富帥養(yǎng)成第一招
Android零基礎(chǔ)入門第5節(jié):善用ADT Bundle, 輕松邂逅女神
Android零基礎(chǔ)入門第6節(jié):配置優(yōu)化SDK Manager, 正式約會(huì)女神
Android零基礎(chǔ)入門第7節(jié):搞定Android模擬器,開(kāi)啟甜蜜之旅
Android零基礎(chǔ)入門第8節(jié):HelloWorld,我的第一趟旅程出發(fā)點(diǎn)
Android零基礎(chǔ)入門第9節(jié):Android應(yīng)用實(shí)戰(zhàn),不懂代碼也可以開(kāi)發(fā)
Android零基礎(chǔ)入門第10節(jié):開(kāi)發(fā)IDE大升級(jí),終于迎來(lái)了Android Studio
Android零基礎(chǔ)入門第11節(jié):簡(jiǎn)單幾步帶你飛,運(yùn)行Android Studio工程
Android零基礎(chǔ)入門第12節(jié):熟悉Android Studio界面,開(kāi)始裝逼賣萌
Android零基礎(chǔ)入門第13節(jié):Android Studio個(gè)性化配置,打造開(kāi)發(fā)利器
Android零基礎(chǔ)入門第14節(jié):使用高速Genymotion,跨入火箭時(shí)代
Android零基礎(chǔ)入門第15節(jié):掌握Android Studio項(xiàng)目結(jié)構(gòu),揚(yáng)帆起航
Android零基礎(chǔ)入門第16節(jié):Android用戶界面開(kāi)發(fā)概述
Android零基礎(chǔ)入門第17節(jié):文本框TextView
Android零基礎(chǔ)入門第18節(jié):輸入框EditText
Android零基礎(chǔ)入門第19節(jié):按鈕Button
Android零基礎(chǔ)入門第20節(jié):復(fù)選框CheckBox和單選按鈕RadioButton
Android零基礎(chǔ)入門第21節(jié):開(kāi)關(guān)組件ToggleButton和Switch
Android零基礎(chǔ)入門第22節(jié):圖像視圖ImageView
Android零基礎(chǔ)入門第23節(jié):圖像按鈕ImageButton和縮放按鈕ZoomButton
Android零基礎(chǔ)入門第24節(jié):自定義View簡(jiǎn)單使用,打造屬于你的控件
Android零基礎(chǔ)入門第25節(jié):簡(jiǎn)單且最常用的LinearLayout線性布局
Android零基礎(chǔ)入門第26節(jié):兩種對(duì)齊方式,layout_gravity和gravity大不同
Android零基礎(chǔ)入門第27節(jié):正確使用padding和margin
Android零基礎(chǔ)入門第28節(jié):輕松掌握RelativeLayout相對(duì)布局
Android零基礎(chǔ)入門第29節(jié):善用TableLayout表格布局
Android零基礎(chǔ)入門第30節(jié):兩分鐘掌握FrameLayout幀布局
Android零基礎(chǔ)入門第31節(jié):少用的AbsoluteLayout絕對(duì)布局
Android零基礎(chǔ)入門第32節(jié):新推出的GridLayout網(wǎng)格布局
Android零基礎(chǔ)入門第33節(jié):Android事件處理概述
Android零基礎(chǔ)入門第34節(jié):Android中基于監(jiān)聽(tīng)的事件處理
Android零基礎(chǔ)入門第35節(jié):Android中基于回調(diào)的事件處理
Android零基礎(chǔ)入門第36節(jié):Android系統(tǒng)事件的處理
Android零基礎(chǔ)入門第37節(jié):初識(shí)ListView
Android零基礎(chǔ)入門第38節(jié):初識(shí)Adapter
Android零基礎(chǔ)入門第39節(jié):ListActivity和自定義列表項(xiàng)
Android零基礎(chǔ)入門第40節(jié):自定義ArrayAdapter
Android零基礎(chǔ)入門第41節(jié):使用SimpleAdapter
Android零基礎(chǔ)入門第42節(jié):自定義BaseAdapter
Android零基礎(chǔ)入門第43節(jié):ListView優(yōu)化和列表首尾使用
Android零基礎(chǔ)入門第44節(jié):ListView數(shù)據(jù)動(dòng)態(tài)更新
Android零基礎(chǔ)入門第45節(jié):網(wǎng)格視圖GridView
Android零基礎(chǔ)入門第46節(jié):列表選項(xiàng)框Spinner
Android零基礎(chǔ)入門第47節(jié):自動(dòng)完成文本框AutoCompleteTextView
Android零基礎(chǔ)入門第48節(jié):可折疊列表ExpandableListView
Android零基礎(chǔ)入門第49節(jié):AdapterViewFlipper圖片輪播
Android零基礎(chǔ)入門第50節(jié):StackView卡片堆疊
Android零基礎(chǔ)入門第51節(jié):進(jìn)度條ProgressBar
Android零基礎(chǔ)入門第52節(jié):自定義ProgressBar炫酷進(jìn)度條
Android零基礎(chǔ)入門第53節(jié):拖動(dòng)條SeekBar和星級(jí)評(píng)分條RatingBar
Android零基礎(chǔ)入門第54節(jié):視圖切換組件ViewSwitcher
Android零基礎(chǔ)入門第55節(jié):ImageSwitcher和TextSwitcher
Android零基礎(chǔ)入門第56節(jié):翻轉(zhuǎn)視圖ViewFlipper
Android零基礎(chǔ)入門第57節(jié):DatePicker和TimePicker選擇器
Android零基礎(chǔ)入門第58節(jié):數(shù)值選擇器NumberPicker
Android零基礎(chǔ)入門第59節(jié):常用三大Clock時(shí)鐘組件
Android零基礎(chǔ)入門第60節(jié):日歷視圖CalendarView和定時(shí)器Chronometer
Android零基礎(chǔ)入門第61節(jié):滾動(dòng)視圖ScrollView
Android零基礎(chǔ)入門第62節(jié):搜索框組件SearchView
Android零基礎(chǔ)入門第63節(jié):值得借鑒學(xué)習(xí)的選項(xiàng)卡TabHost
Android零基礎(chǔ)入門第64節(jié):揭開(kāi)RecyclerView廬山真面目
Android零基礎(chǔ)入門第65節(jié):RecyclerView分割線開(kāi)發(fā)技巧
Android零基礎(chǔ)入門第66節(jié):RecyclerView點(diǎn)擊事件處理
Android零基礎(chǔ)入門第67節(jié):RecyclerView數(shù)據(jù)動(dòng)態(tài)更新
Android零基礎(chǔ)入門第68節(jié):RecyclerView添加首尾視圖
Android零基礎(chǔ)入門第69節(jié):ViewPager快速實(shí)現(xiàn)引導(dǎo)頁(yè)
Android零基礎(chǔ)入門第70節(jié):ViewPager打造TabHost效果
Android零基礎(chǔ)入門第71節(jié):CardView簡(jiǎn)單實(shí)現(xiàn)卡片式布局
Android零基礎(chǔ)入門第72節(jié):SwipeRefreshLayout下拉刷新
Android零基礎(chǔ)入門第73節(jié):Activity創(chuàng)建和配置
Android零基礎(chǔ)入門第74節(jié):Activity啟動(dòng)和關(guān)閉
Android零基礎(chǔ)入門第75節(jié):Activity狀態(tài)和生命周期
Android零基礎(chǔ)入門第76節(jié):Activity數(shù)據(jù)保存和橫豎屏切換
Android零基礎(chǔ)入門第77節(jié):Activity任務(wù)棧和啟動(dòng)模式
Android零基礎(chǔ)入門第78節(jié):四大組件的紐帶——Intent
Android零基礎(chǔ)入門第79節(jié):Intent 屬性詳解(上)
Android零基礎(chǔ)入門第80節(jié):Intent 屬性詳解(下)
Android零基礎(chǔ)入門第81節(jié):Activity數(shù)據(jù)傳遞
Android零基礎(chǔ)入門第82節(jié):Activity數(shù)據(jù)回傳
轉(zhuǎn)載于:https://my.oschina.net/u/3598984/blog/1555970
總結(jié)
以上是生活随笔為你收集整理的Android零基础入门第83节:Activity间数据传递方法汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到老家房子拆迁是什么意思
- 下一篇: 阿里巴巴旗下平台口碑推出无人收银技术,改