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中。基于此,Fragment的生命周期會受到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
主站蜘蛛池模板: 色偷偷一区二区三区| 67194在线午夜亚洲| 91无码国产视频| 国产在线观看91精品| 久久五月视频| 欧美啪啪精品| 免费国产无遮挡又黄又爽| 精品91自产拍在线| 色妞www精品视频一级下载| 国产成人免费| 奇米影视狠狠精品7777| 久久久久国产精品免费免费不卡| 中文字幕资源站| 日韩欧美网址| 亚洲最大福利视频网| 91精品国产情侣高潮露脸| 国产区网址| 婷婷六月综合网| 极品国产一区二区三区| 毛片久久网站小视频| 日韩人妻精品一区| 久久久久九九精品影院| 国产精品自在线天天看片| 亚洲欧美精品一中文字幕| 国产美女叼嘿视频免费看| 波多野结衣一级毛片| 国产极品嫩模在线观看91| 午夜毛片免费观看视频 | 黄色免费在线网址| 久久久久亚洲精品成人网| 日本成人一区| 中文字幕66页| 岛国精品一区免费视频在线观看| 亚洲天堂日韩在线| 2021国产精品自拍| 亚洲浓毛av| 亚洲综合亚洲国产尤物| 免费a在线观看播放| 午夜国产小视频| 日本伊人色综合网| 99免费在线观看视频| 国产视频一区二区在线观看 | 久99久热只有精品国产15| 欧美一级高清片欧美国产欧美| 国产第一页屁屁影院| 免费一级毛片完整版在线看| 伊人蕉久影院| 日日拍夜夜操| 亚洲无码A视频在线| 99热国产这里只有精品无卡顿" | 日韩免费中文字幕| 毛片久久网站小视频| 国产乱子伦手机在线| 久久久噜噜噜久久中文字幕色伊伊| 国产精品视频白浆免费视频| 久久久久久久久亚洲精品| 欧美成人第一页| 毛片大全免费观看| 成人亚洲视频| 国产一级无码不卡视频| 粉嫩国产白浆在线观看| 国产Av无码精品色午夜| 欧美影院久久| 538精品在线观看| 在线欧美日韩国产| 国产毛片久久国产| 久久亚洲国产视频| 99re在线视频观看| 免费高清毛片| 国产成人亚洲欧美激情| 中日无码在线观看| 欧美97欧美综合色伦图| 理论片一区| 成年人国产网站| 色综合综合网| 青青草国产免费国产| 国产成人综合网在线观看| 午夜精品久久久久久久99热下载| 综合亚洲色图| 中文字幕无码中文字幕有码在线| 毛片免费试看| 夜精品a一区二区三区|