日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android碎片Fragment详讲(1)

發布時間:2023/12/3 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android碎片Fragment详讲(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Fragment

Fragment創建的步驟

1、????????繼承fragment一定是V4包下的

2、????????有且只有一個無參的構造方法

3、????????如果Fragment需要顯示界面,需要重寫onCreateView方法

4、????????指定布局資源,或者創建布局,返回即可

靜態創建fragment時:

需要指定fragment的class屬性 以及給Fragment加上id或者tag屬性

?

在onCreateView內部,可以設置控件的內容,開啟線程,連接網絡.。

Fragment的作用

1、????????簡化重復的開發工作,將內容與工程整合,最終提供功能的重用性

2、????????體改內聚,減少耦合成都度

3、????????Fragment用于布局界面的切分和優化,減少布局的重復,提高開發的效率。

通常tab樣式的切換,,使用RadioGroup。

?

主流的底部tab切換頁面的設計方式:就是中間一個FrameLayout 底部RadioGroup 切換時,替換FrameLayout中的fragment

每一個Fragment可以通過兩種方式添加到activity中

1)????????使用fragment標簽直接添加到activity

2)????使用代碼來添加使用兩個類,Frgamentmanager SupportFragmentManager

3)????內部添加刪除替換隱藏顯示,需要manager.beginTransaction()

4)????事物每次操作之前必須重啟,不允許使用成員變量的方式。

Fragment的生命周期:

1、????????Fragment的聲明周期和activity的聲明周期相似

2、????????以為Fragment依賴于Activity顯示,那么當Activity發生生命周期變化的時候,Fragment同樣發生相同的變化,包括

1)????????onCrate

2)????????onStart

3)????????onResume

4)????????onPause

5)????????onStop

6)????????onDestroy

Fragment還有一些聲明周期

onAttach()執行該方法時,Fragment與Activity已經完成綁定,該方法有一個Activity類型的參數,代表綁定的Activity,這時候你可以執行諸如mActivity = activity的操作。
onCreate():初始化Fragment。可通過參數savedInstanceState獲取之前保存的值。
onCreateView()初始化Fragment的布局。加載布局和findViewById的操作通常在此函數內完成,但是不建議執行耗時的操作,比如讀取數據庫數據列表。
onActivityCreated()執行該方法時,與Fragment綁定的Activity的onCreate方法已經執行完成并返回,在該方法內可以進行與Activity交互的UI操作,所以在該方法之前Activity的onCreate方法并未執行完成,如果提前進行交互操作,會引發空指針異常。
onStart():執行該方法時,Fragment由不可見變為可見狀態。
onResume():執行該方法時,Fragment處于活動狀態,用戶可與之交互。
onPause():執行該方法時,Fragment處于暫停狀態,但依然可見,用戶不能與之交互。
onSaveInstanceState()保存當前Fragment的狀態。該方法會自動保存Fragment的狀態,比如EditText鍵入的文本,即使Fragment被回收又重新創建,一樣能恢復EditText之前鍵入的文本。
onStop():執行該方法時,Fragment完全不可見。
onDestroyView()銷毀與Fragment有關的視圖,但未與Activity解除綁定,依然可以通過onCreateView方法重新創建視圖。通常在ViewPager+Fragment的方式下會調用此方法。
onDestroy():銷毀Fragment。通常按Back鍵退出或者Fragment被回收時調用此方法。
onDetach()解除與Activity的綁定。在onDestroy方法之后調用。

生命周期:



當Activity啟動后,首先執行activity的onCreate方法,之后執行Fragment的onAttch方法,當進行replace方法是,執行onDetachon方法。


啟動APP的聲明周期變化:


當fragment進行切換的時候,生命周期的變化:


首先是兩一個Fragment先與Activity進行連接,執行onAttach方法,

之后Fragment執行onCraete方法,

之前的fragment進入到不可見狀態onPause,之后之前的Fragment onStop 銷毀界面,之后銷毀,之后與Activity失去聯系,

此時先的Fragment創建View視圖,執行onCrateView方法,之后onActivityCrate方法,start,進入活動狀態onResuume狀態。

點擊back鍵:

Fragment ?執行onPuase不可見onStop? ondestroyView?? ondestroy onDetach方法。


這個界面的時候,執行onPause? onstop

?

恢復之后:Fragment onStart ??Activity onstart? Activity onResume?? Fragment onResume

?

?

?

參考:借鑒于網絡

生命周期變化 : 切換到該Fragment

?

05-21 14:26:35.095:D/FragmentDemo(7649): onAttach

?05-21 14:26:35.095: D/FragmentDemo(7649):onCreate

?05-21 14:26:35.095: D/FragmentDemo(7649):onCreateView

?05-21 14:26:35.100: D/FragmentDemo(7649):onActivityCreated

?05-21 14:26:35.120: D/FragmentDemo(7649):onStart

?05-21 14:26:35.120: D/FragmentDemo(7649):onResume

?

屏幕滅掉:

?

05-21 14:27:35.185:D/FragmentDemo(7649): onPause

?05-21 14:27:35.205: D/FragmentDemo(7649):onSaveInstanceState

?05-21 14:27:35.205: D/FragmentDemo(7649):onStop

?

屏幕解鎖

?

05-21 14:33:13.240:D/FragmentDemo(7649): onStart

?05-21 14:33:13.275: D/FragmentDemo(7649):onResume

?

切換到其他Fragment:

?

05-21 14:33:33.655:D/FragmentDemo(7649): onPause

?05-21 14:33:33.655: D/FragmentDemo(7649):onStop

?05-21 14:33:33.660: D/FragmentDemo(7649):onDestroyView

?

切換回本身的Fragment:

?

05-21 14:33:55.820:D/FragmentDemo(7649): onCreateView

?05-21 14:33:55.825: D/FragmentDemo(7649):onActivityCreated

?05-21 14:33:55.825: D/FragmentDemo(7649):onStart

?05-21 14:33:55.825: D/FragmentDemo(7649):onResume

?

回到桌面

?

05-21 14:34:26.590:D/FragmentDemo(7649): onPause

?05-21 14:34:26.880: D/FragmentDemo(7649):onSaveInstanceState

?05-21 14:34:26.880: D/FragmentDemo(7649):onStop

?

?

?

回到應用

05-21 14:36:51.940:D/FragmentDemo(7649): onStart

?05-21 14:36:51.940: D/FragmentDemo(7649):onResume

?

退出應用

05-21 14:37:03.020:D/FragmentDemo(7649): onPause

?05-21 14:37:03.155: D/FragmentDemo(7649):onStop

?05-21 14:37:03.155: D/FragmentDemo(7649):onDestroyView

?05-21 14:37:03.165: D/FragmentDemo(7649):onDestroy

05-21 14:37:03.165:D/FragmentDemo(7649): onDetach

如果替換或者刪除一個fragment然后然用戶可以導航到上一個fragment,必須在調用commit()方法之前調用addToBackStack()方法添加到回退棧,如果你把這個fragment添加到了回退站棧,在提交之后這個fragment會是被Stop而不是destroy,如果用戶導航到這個fragment,這個fragment將會被Restart而不是重新創建,如果沒有吧它添加到回退棧,則在刪除或者替換的時候它被Destroyed。

與其他fragment之間的交互:

???? 兩個單獨的fragment之間是不應該進行通信的,應該使用他們所在的Activity作為溝通的紐帶

???? 為了實現兩個Fragment的交互,您可以在Fragment中定義一個接口,然后再這個接口中定義一個方法,在Fragment的onAttach()方法中調用這個接口中的方法。然后讓Activity實現這個方法來完成Activity和Fragment之間的通信。

?

?

?

總結

以上是生活随笔為你收集整理的Android碎片Fragment详讲(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。