亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Android開發(fā)中Activity和Fragment的通信方式分析

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

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

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

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

        1 Fragment簡介

        1.1 創(chuàng)建

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

        動態(tài)創(chuàng)建的具體步驟:

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

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

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

        靜態(tài)創(chuàng)建的具體步驟:

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

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

        1.2 Fragment的生命周期

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

        圖1 Fragment的生命周期示意圖

        2 Fragment和Activity的通信

        2.1 Activity訪問Fragment的控件

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

        2.2 Fragment對Activity的訪問

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

        2.3 一個Activity中多個Fragment之間的通信和數(shù)據(jù)交換

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

        3 結論

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

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

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

        在Activity中實現(xiàn)該接口并重寫該方法。

        猜你喜歡
        用戶方法
        學習方法
        關注用戶
        商用汽車(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億用戶
        天下第二社区在线视频| 人妻人妇av一区二区三区四区| 国产亚洲精品97在线视频一| 久久久久成人精品无码| 无码中文字幕色专区| 亚洲精品天堂在线观看| 国产激情一区二区三区成人 | 久久国产精品波多野结衣av| 无码制服丝袜中文字幕| 免费国产一区二区视频| 亚洲av成人精品日韩在线播放| 中文字幕无码免费久久| 少妇一级aa一区二区三区片| 亚洲国产精品国自产拍性色| 夜夜添夜夜添夜夜摸夜夜摸 | 女优av一区二区在线观看| 亚洲精品乱码久久久久久中文字幕 | 亚洲一二三区免费视频| 人妻少妇乱子伦精品无码专区电影| 亚洲最新偷拍网站| 亚洲一区二区三区乱码在线| 久久综网色亚洲美女亚洲av| 极品美女aⅴ在线观看| 传媒在线无码| 精品一区二区三区牛牛| 激情综合色五月丁香六月欧美 | 久久99精品久久久久久噜噜| 色噜噜狠狠色综合成人网| 亚洲AV无码成人精品区日韩密殿| 在线国产丝袜自拍观看| 疯狂的欧美乱大交| 99久久久国产精品免费蜜臀| 激情视频国产在线观看| 邻居少妇张开腿让我爽了一夜| 亚洲国产精品特色大片观看完整版| 无码无在线观看| 中文字幕av长濑麻美| 亚洲色欲色欲www| 精品亚洲少妇一区二区三区| 日本一区二区三区清视频| 日韩精品一区二区午夜成人版|