Fragment的陷阱 概述

2022-03-28 09:11:53 字數 973 閱讀 2474

以前做過的乙個專案,fragment巢狀高德地圖,當再次進入fragment的時候,會出現奇怪的現象。巢狀的地圖會出現滑動不動的情況,起先還以為是高德的bug呢,經過一番研究,終確定這是乙個坑。

先對fragment做乙個簡單的介紹,借用csdn上朋友寫的一段內容。

android在3.0中引入了fragments的概念,主要目的是用在大螢幕裝置上--例如平板電腦上,支援更加動態和靈活的ui設計。平板電 腦的螢幕要比手機的大得多,有更多的空間來放更多的ui元件,並且這些元件之間會產生更多的互動。fragment允許這樣的一種設計,而不需要你親自來 管理 viewhierarchy的複雜變化。 通過將activity的布局分散到fragment中, 你可以在執行時修改activity的外觀,並在由activity管理的back stack中儲存那些變化。

那有沒有上面解決辦法呢?答案是肯定的。ondestroyview的執行和activity的ondestroy不一樣,不會銷毀當前的頁面,所 以fragment的所有成員變數的引用都還在。那就好辦了,我們在oncreateview的時候,先判斷該取到的資料是否為空,比如fragment 的根檢視rootview,網路請求獲取到的資料等,如果不為空就不用再次執行。這樣一來也就避免了上述說的那些問題的存在了。

但是需要注意的一點就是,如果重用rootview的話,一定要記得在ondestroyview裡面把rootview先給移除掉,因為已經有過父布局的view是不能再次新增到另乙個新的父布局上面的。**如下

這樣也就解決了最前面我遇到的那個bug,由於每次進入都會建立乙個mapview,很多地圖疊在了一起,所以就出現了"滑不動"的奇怪現象。

今天分享的只是乙個優化策略罷了,希望能幫助到你。

fragment的RadioButton 懶載入

author zhudaihao date 2020 8 11 實現radiobutton 懶載入 public abstract class baselazynewfragment extends fragment 繫結xml unbinder butterknife.bind this,root...

Fragment的動態載入

fragment的動態載入的大綱步驟 1.在布局檔案中在需要動態載入fragment控制項的地方新增乙個佔位容器一般是乙個layout 2.構建乙個fragmentmanager的管理類,該類用於開啟乙個事務 privatefragmentmanager manager manager getfra...

fragment的回退總結

第乙個引數就是 fragmenttransaction呼叫commit 返回後的整數,第二個引數傳0表示回退到第乙個引數包含的狀態,傳fragmentmanager.pop back stack inclusive表示第乙個引數的狀態也回退調。第乙個引數是 fragmenttransaction的 ...