Activity 是什么
? ??activity是?Android 組件?中最基本也是最為常見用的 四大組件 之一。Android?四大組件有 Activity,Service 服務(wù),ContentProvider?內(nèi)容提供,BroadcastReceiver 廣播接收器。
????Activity是一個應(yīng)用程序組件,提供一個屏幕,用戶可以用來交互為了完成某項任務(wù)。
????Activity中所有操作都與用戶密切相關(guān),是一個負(fù)責(zé)與?用戶交互?的組件,可以通過 setContentView(View) 來顯示指定控件。
????在一個android應(yīng)用中,一個 Activity 通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監(jiān)聽并處理用戶的事件做出響應(yīng)。Activity之間通過Intent進(jìn)行通信。
Activity? 的創(chuàng)建
? ? 分為三部
? ? ? ? 1 創(chuàng)建?Activity?

? ? ? ? 2 在 manifest 中注冊?activity

? ? ? ? 3 關(guān)聯(lián)布局

Activity 之間的跳轉(zhuǎn)
? ? ? ???Intent 類


? ? 注意: 需要在?manifest 中注冊?activity (一般都是自動注冊的)。
Activity? 4 種啟動模式
????Activity 存放 在 棧中,?Activity 之間的跳轉(zhuǎn)?就像?出棧?和?入棧?一樣,這是 系統(tǒng)默認(rèn)的 啟動模式;

? ? 4 種啟動模式
? ? ? ? 1 standard

? ? ? ? 2 singleTop
? ? ? ? ? ? 頂部復(fù)用模式

? ? ? ? 3 singleTask

? ? ? ? 4 singleInstance

? ? 如何設(shè)置模式
? ? ? ? 1?manifest 中設(shè)置

? ? ? ? 2 在代碼中設(shè)置

Activity 的生命周期
? ? 類比 Vue 、React 的生命周期



Activity 之間數(shù)據(jù)的傳遞
? ? 頁面跳轉(zhuǎn)傳參
? ? ? ? 可以傳遞 多種數(shù)據(jù)結(jié)構(gòu)

? ? ? ? ? ? 注意 當(dāng)傳遞 序列化的數(shù)據(jù),該類需要?implements Serializable

? ? 第二個頁面 接受參數(shù)
? ? ? ? 在?onCreate 生命周期 中

當(dāng)我們需要回傳數(shù)據(jù)的時候
? ? 關(guān)閉頁面將數(shù)據(jù)回傳到原來的頁面
? ? ? ? ? ? 步驟
? ? ? ? ? ? ? ? 1 第一個頁面 使用 startActivityForResult

? ? ? ? ? ? ? ? 2 第二個頁面 使用 setResult 返回數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? 可以選擇 關(guān)閉頁面的 生命周期 或者 退后按鈕事件中 返回數(shù)據(jù)

? ? ? ? ? ? ? ? 3 第一個頁面?onActivityResult 監(jiān)聽結(jié)果返回的 事件

Fragment
? ? ? ? 設(shè)計思想

? ??????? 做不同屏幕的適配, 模塊化可復(fù)用,就跟?React 和 Vue 的組件類似;
? ? ? ? Fragment? 和 Activity 的區(qū)別
? ? ? ? ? ? 1 Fragment 是到 Android 3.0+ 以后才出現(xiàn);
? ? ? ? ? ? 2 一個 Activity 可以運(yùn)行多個?Fragment;
? ? ? ? ? ? 3?Fragment 不能脫離 Activity 而存在;
? ? ? ? ? ? 4 Activity 是屏幕的主題,而?Fragment 是 Activity 的一個組成元素;


使用方式
? ? ? ? 靜態(tài)加載: XML
? ? ? ? ? ? 步驟
? ? ? ? ? ? ? ? 1 編寫 fragment 的 布局;

? ? ? ? ? ? 2 編寫 fragment 類

? ? ?3 在主 Activity 中應(yīng)用 fragment
? ? ? ?注意 name 是 fragment 的 全路徑


????動態(tài)加載: Java code?
? ? ? ? 步驟 1?
? ? ? ? ? 同靜態(tài)加載 還是要先把 fragment 的類 和 布局寫好
? ? ? ? 步驟 2?
? ? ? ? ? 需要加載 fragment 的 Activity 的布局文件 需要 寫好 占位的 控件;


Fragment 傳值
? ?類比 Vue 和 React 的 父子組件傳值;
? ?Activity -----> Fragment 傳值
? ? ? ? 使用?setArguments 方法


? ? 類比 React 的 state, 首先 聲明 state, 然后父組件中 傳入?yún)?shù), 這樣 子組件就能拿到參數(shù)并使用, 注意 在不同的生命周期中獲??;
? ?Fragment?----->?Activity?傳值
? ? ? ? 使用 Callback


通過 將 主 Activity 的 this 傳入, 并且 主 Activity 實現(xiàn)了 onClick 方法?

mOnTitleClickListener 就是 this,直接 調(diào)用了 Activity 的 onclick 方法,拿到了 fragment 的傳遞的參數(shù) title;