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
主站蜘蛛池模板: 无码中文字幕精品推荐| 无码国产伊人| 国产成人av一区二区三区| 91精品在线视频观看| 色综合久久无码网| 毛片免费在线| 黄色a一级视频| 欧美午夜小视频| 欧美特黄一级大黄录像| 亚洲一级毛片在线观| 天天躁狠狠躁| 国产在线视频二区| 亚洲无码高清一区| 香蕉eeww99国产在线观看| 国产成人资源| 中文字幕在线看视频一区二区三区| 国产玖玖视频| 久久国产精品电影| 精品视频一区二区三区在线播| 久夜色精品国产噜噜| 狠狠色综合久久狠狠色综合| 伊人大杳蕉中文无码| 91免费国产在线观看尤物| 91免费国产高清观看| 国产成人久视频免费| 亚洲午夜综合网| 国产9191精品免费观看| 在线视频亚洲欧美| 亚洲最大福利视频网| 精品国产成人高清在线| 国产九九精品视频| 九九免费观看全部免费视频| 国产成人精品亚洲77美色| a毛片免费观看| 国产亚洲欧美在线人成aaaa | 精品综合久久久久久97超人该| 国产精品视频白浆免费视频| 亚洲AV无码一区二区三区牲色| 亚洲精品在线影院| 国产精品高清国产三级囯产AV| 一区二区三区四区精品视频| 日韩黄色在线| 国产日本视频91| 高清无码不卡视频| 国产经典免费播放视频| 精品伊人久久久大香线蕉欧美| 97se亚洲| 免费一级大毛片a一观看不卡| 亚洲男女天堂| 日韩亚洲高清一区二区| 91在线丝袜| 国产美女丝袜高潮| 在线不卡免费视频| 99草精品视频| 欧美不卡视频在线| 伊人大杳蕉中文无码| 99福利视频导航| 亚洲香蕉在线| 精品少妇人妻无码久久| 999精品免费视频| 欧美日韩va| 国产午夜不卡| 中文无码精品a∨在线观看| 亚洲人成人伊人成综合网无码| 综合人妻久久一区二区精品| 老熟妇喷水一区二区三区| 国产精品女熟高潮视频| 成人福利在线免费观看| 亚洲天堂日韩av电影| 久久精品国产在热久久2019| 在线观看欧美精品二区| 三级欧美在线| 国产欧美日韩综合一区在线播放| 亚洲性色永久网址| 伊在人亚洲香蕉精品播放| 国产高清无码麻豆精品| 小说 亚洲 无码 精品| 久无码久无码av无码| 久草性视频| 97国产成人无码精品久久久| 欧美日韩国产在线播放| 国产精品污污在线观看网站|