android動態fragment
1. android開發 動態載入fragment 怎麼給fragment添加tag
FragmentTransaction add(int containerViewId, Fragment fragment, String tag)
2. android fragment能做什麼
fragment的目的是適應眾多解析度,可以在不同屏幕上動態管理UI.可以將一個activty分成不同的區塊來現實,大屏小屏實現很好的兼容 。
Android是在Android 3.0 (API level 11)開始引入Fragment的。
可以把Fragment想成Activity中的模塊,這個模塊有自己的布局,有自己的生命周期,單獨處理自己的輸入,在Activity運行的時候可以載入或者移除Fragment模塊。
可以把Fragment設計成可以在多個Activity中復用的模塊。
當開發的應用程序同時適用於平板電腦和手機時,可以利用Fragment實現靈活的布局,改善用戶體驗。
3. Android組件之Fragment(一)---基礎知識與運用
Fragment是Android3.0後引入的一個新的API,他出現的初衷是為了適應大屏幕的平板電腦, 當然現在他仍然是平板APP UI設計的寵兒,而且我們普通手機開發也會加入這個Fragment, 我們可以把他看成一個小型的Activity,又稱Activity片段!想想,如果一個很大的界面,我們 就一個布局,寫起界面來會有多麻煩,而且如果組件多的話是管理起來也很麻煩!而使用Fragment 我們可以把屏幕劃分成幾塊,然後進行分組,進行一個模塊化的管理!從而可以更加方便的在 運行過程中動態地更新Activity的用戶界面!另外Fragment並不能單獨使用,他需要嵌套在Activity 中使用,盡管他擁有自己的生命周期,但是還是會受到宿主Activity的生命周期的影響,比如Activity 被destory銷毀了,他也會跟著銷毀!
引用官方的一張圖片,其實已經說明問題了,就是為了更好的適配大屏,在大屏的時候,不需要去在一個activity內部通過復雜的布局和界面去實現,只需要去在一個activity內部,通過多個fragment來做界面布局實現即可,而且針對於多個fragment來說, 每個fragment有單獨的生命周期,
Demo樣例,我們在一個界面中,有上下兩個fragment,如圖所示:
Step 2: Fragment創建,視圖載入,數據賦值
BlankFragment .java
Step 3: Activity在onCreate( )方法中調用setContentView()之後調用FragmentTransaction 進行事務提交
FragmentTestActivity.java
在xml中聲明兩個fragment,指定為具體的fragment
Step 1:定義Fragment的布局,就是fragment顯示內容的
Step 2:自定義一個Fragment類,需要繼承Fragment或者他的子類,重寫onCreateView()方法 在該方法中調用:inflater.inflate()方法載入Fragment的布局文件,接著返回載入的view對象
BlankFragment.java
Step 3:在需要載入Fragment的Activity對應的布局文件中添加fragment的標簽, 記住,name屬性是全限定類名哦,就是要包含Fragment的包名,如:
Step 4: Activity在onCreate( )方法中調用setContentView()載入布局文件即可!
針對在一個Activity中的某個Layout中切換Fragment,,無非兩種方法:
我們自己看一下方法注釋
源碼方法注釋裡面說的很明白,這個方法會移除所有的fragment,然後添加當前的fragment。
這時分為兩種情況,一種是fragment已有並且在前台展示,一種是未有或者在後台,針對於前者,此時replace,生命周期不會發生變化,針對後者,生命周期會重新走
分為兩種情況,一種fragment已存在,一種未存在,針對於前者,生命周期無變化,但是會回調onHiddenChanged方法,針對於後者,生命周期會創建一次。
1.Fragment是Google官方引入的一個為了適配大屏、多頁面的一個組件。您可以理解為它就是一個類而已,只不過裡麵包含了View,並且與activity的生命周期進行了關聯。
2.動態載入與靜態載入相對來說,建議使用動態載入,靜態載入固定在了xml文件中,永遠不變。
3.replace的fragment如果不在前台,會執行所有生命周期,反之不會執行任何生命周期方法;hide+show生命周期並不會發生變化,但是會回調onHiddenChanged方法,在實際開發中,建議add之後,使用hide+show來操作fragment,一方面減少資源的重復載入和創建,另外一方面提升用戶體驗感。
4.fragment的生命周期大體上和activity一致,但是前期和後期多了一些東西,因為fragment內部有view,那麼這個view需要進行創建、然後添加到activity內部,所以相應的在onCreate與onStart之間就多了幾個方法-onCreateView、onViewCreated。相同的道理,fragment的view與activity解綁,也相應的在onStop與onDestory之間多個方法-onDestroyView。onAttach與onDetach可以理解為視圖與activity產生關聯和接觸關聯,是最開始和最後的步驟。
Demo地址
4. 請都一個Android開發中動態載入Fragment的問題
manager.findFragmentById(R.id.fragmentContainer);
這是從FragmentManager中查找一個R.id.fragmentContainer的Fragment
也就是說程序第一次去查找的時候,肯定為空的,FragmentManager中並不存在這個對象
只有你add進去以後,再查找就不會為null了
5. 請問Android中的Fragment有什麼作用
Android運行在各種各樣的設備中,有小屏幕的手機,超大屏的平板甚至電視。針對屏幕尺寸的差距,很多情況下,都是先針對手機開發一套App,然後拷貝一份,修改布局以適應平板神馬超級大屏的。難道無法做到一個App可以同時適應手機和平板么,當然了,必須有啊。Fragment的出現就是為了解決這樣的問題。你可以把Fragment當成Activity的一個界面的一個組成部分,甚至Activity的界面可以完全有不同的Fragment組成,更帥氣的是Fragment擁有自己的生命周期和接收、處理用戶的事件,這樣就不必在Activity寫一堆控制項的事件處理的代碼了。更為重要的是,你可以動態的添加、替換和移除某個Fragment。
在秒秒學的網站中有專門的課程來介紹Frament。
6. 在Android開發中fragment有什麼優缺點
Fragment優點
Fragment可以使你能夠將activity分離成多個可重用的組件,每個都有它自己的生命周期和UI。
Fragment可以輕松得創建動態靈活的UI設計,可以適應於不同的屏幕尺寸。從手機到平板電腦。
Fragment是一個獨立的模塊,緊緊地與activity綁定在一起。可以運行中動態地移除、加入、交換等。
Fragment提供一個新的方式讓你在不同的安卓設備上統一你的UI。
Fragment 解決Activity間的切換不流暢,輕量切換。
Fragment 替代TabActivity做導航,性能更好。
Fragment 在4.2.版本中新增嵌套fragment使用方法,能夠生成更好的界面效果。
Fragment做局部內容更新更方便,原來為了到達這一點要把多個布局放到一個activity裡面,現在可以用多Fragment來代替,只有在需要的時候才載入Fragment,提高性能。
可以從startActivityForResult中接收到返回結果,但是View不能。
反正我是沒有看到fragment有什麼缺點(可能是我程度沒達到),再說它(fragment)就是一個api而已感覺不好就用activity就ok了。