999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Android開發中Activity和Fragment的通信方式分析

2021-06-30 01:43:42西安電子科技大學機電工程學院郭雨佳韓雨辰趙明英朱俊杰
電子世界 2021年11期
關鍵詞:用戶方法

西安電子科技大學機電工程學院 郭雨佳 韓雨辰 趙明英 朱俊杰

在現有智能手機操作系統中,Android占絕對主導地位。Activity是Android四大組件之一,Fragment是一種嵌套在Activity中的UI組件。由于多個Activity的進棧出棧會造成程序卡頓,所以實際開發的時候,為了達到更好的用戶體驗大多會使用Fragment來設計用戶交互界面。正因如此,Activity和Fragment之間的通信便顯得尤為重要。本文分析了兩者間的多種通信方式,提出接口回調方式是進行通信的最佳方式。

在Android程序設計中,Activity是重要的控件之一。一個Activity就代表了應用程序中的一個頁面。每次點擊頁面進行跳轉的時候,需要將當前的Activity的狀態保存至堆棧,下次使用的時候再從堆棧中取出來展示給用戶。這樣不斷的進出堆棧,將會導致應用程序運行過程中出現卡頓,嚴重影響用戶體驗。為了解決這一問題,Android系統引入了Fragment。Fragment并不是一個獨立的部分,是一種可以嵌入到Activity中的UI控件。Fragment的出現使在同一個Activity上進行界面的切換成為現實。

1 Fragment簡介

1.1 創建

創建Fragment的方法有動態和靜態兩種。前者就是通過Java代碼來創建Fragment的實例,后者則是在編寫Activity的xml布局文件時通過<fragment>標簽實現控件的創建。

動態創建的具體步驟:

第一步:在當前Activity的布局文件中創建FrameLayout并為其設置id;

第二步:鼠標移動到當前包名處并單擊右鍵,選擇new->Fragment->Blank Fragment,創建新的Fragment;

第三步:在Activity的onCreat()方法中使用代碼將fragment添加到FrameLayout。

靜態創建的具體步驟:

第一步:鼠標移動到當前包名并單擊右鍵,選擇new->Fragment->Blank Fragment,創建新的Fragment;

第二步:在在xml文件中創建fragment控件,并通過name屬性引入fragment文件,同時可以為fragment創建一個id,以便后續的使用。

1.2 Fragment的生命周期

由于Fragment是嵌入到Activity中的一種控件,所以它不會單獨存在,它必須附著到Activity中?;诖耍現ragment的生命周期會受到Activity生命周期的影響。Fragment和Activity有著相似的生命周期,它會隨著Activity的暫停而暫停,隨著Activity的銷毀而銷毀。我們就可以對附著在Activity上面的Fragment進行操作的前提是這個Activity是處于正常運行中的。常見的操作有添加、替換和刪除等。Fragment的生命周期如圖1所示。

圖1 Fragment的生命周期示意圖

2 Fragment和Activity的通信

2.1 Activity訪問Fragment的控件

通過調用getSupportFragmentManager()函數可以拿到用來操作Fragment的Manager,然后通過它的findFragmentByTag()或者findFragmentById()拿到我們需要通信的Fragment實例(如果Fragment是直接在XML中定義的,那么就使用findFragmentById()拿到Fragment),然后就可以對拿到的Fragment進行各種操作了。

2.2 Fragment對Activity的訪問

我們可以通過getActivity().findViewById()的方法獲取Fragment附著的Activity中的控件,但是這種方式代碼耦合性太強,不利于代碼的移植和優化,所以更多情況下采用回調方法來進行二者的通信。在Fragment中聲明一個接口并提供一個接口的引用變量,接口中定義所需的方法,然后讓Activity實現此接口并按照需要重寫接口中的方法。當Fragment需要訪問Activity中數據時,只需要通過接口實例調用接口方法并將參數傳遞,具體的操作代碼則在Activity中的接口方法中完成。

2.3 一個Activity中多個Fragment之間的通信和數據交換

由于Fragment是依附于Activity的,所以Fragment之間通信不能直接通信,必須依靠所依附的Activity。為了降低代碼之間的耦合,可以通過回調實現Fragment之間通信。

3 結論

任意Fragment之間要想通信必須通過他們所屬的Activity來完成,不能是多個Fragment之間的直接通信、調用。同理,Fragment要訪問它所附著的Activity中的信息也得在Activity中進行。Fragment與其所附著的Activtiy之間通信的最佳方式應該是:

在發起事件的Fragment中定義一個接口,接口中聲明你的方法;

在onAttach()方法中要求Activity實現接口;

在Activity中實現該接口并重寫該方法。

猜你喜歡
用戶方法
學習方法
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 欧美成在线视频| 国产高清在线观看| 欧美一区二区三区国产精品| 国产日韩精品一区在线不卡| 国产香蕉在线| 国产剧情无码视频在线观看| 无码福利视频| 亚洲一区二区无码视频| а∨天堂一区中文字幕| 国产成年女人特黄特色毛片免| 伊人国产无码高清视频| 伊人五月丁香综合AⅤ| 国产在线欧美| 国产理论最新国产精品视频| 日韩一级毛一欧美一国产| 青青草原国产| 国产va免费精品观看| 亚洲精品777| 精品五夜婷香蕉国产线看观看| 国产精品手机在线播放| 大乳丰满人妻中文字幕日本| 72种姿势欧美久久久久大黄蕉| 国产日韩欧美在线视频免费观看| 情侣午夜国产在线一区无码| 国产成人亚洲欧美激情| 毛片视频网址| 亚洲欧美日韩天堂| 亚洲精品国产成人7777| 波多野结衣无码AV在线| 国产亚洲精品无码专| 成人午夜视频在线| 国产日本欧美在线观看| 久久人体视频| 一本大道无码日韩精品影视| 国产久草视频| 国产一区亚洲一区| 一级毛片在线播放免费观看| 婷婷五月在线| 91人妻日韩人妻无码专区精品| 在线视频精品一区| 精品福利国产| 日本午夜视频在线观看| 亚洲AⅤ永久无码精品毛片| 日韩精品视频久久| 国产av一码二码三码无码| 亚洲精品不卡午夜精品| 久久黄色免费电影| 91视频国产高清| 亚洲一区二区三区香蕉| 国产成人一区免费观看| 一区二区三区成人| 亚洲一道AV无码午夜福利| 最新加勒比隔壁人妻| 亚洲一区二区成人| 亚洲成年人网| 色噜噜中文网| 在线看AV天堂| 国产毛片基地| 亚洲福利一区二区三区| 欧美一级色视频| 一区二区午夜| 亚洲日本韩在线观看| 亚洲视频影院| 成人在线不卡视频| 亚洲国语自产一区第二页| 无码一区18禁| 免费高清a毛片| 999在线免费视频| 中文字幕免费在线视频| 国产女人18毛片水真多1| 一级全黄毛片| 97视频在线观看免费视频| 色悠久久综合| 色呦呦手机在线精品| 中文字幕 欧美日韩| 中文字幕无码制服中字| 色悠久久久久久久综合网伊人| 久久国产精品波多野结衣| 国产电话自拍伊人| 一本大道视频精品人妻 | 国产尤物jk自慰制服喷水| 国产剧情无码视频在线观看|