『壹』 android 怎麼開啟fragment
需要做的准備
新建一個android項目,主Activity命名為MainActivity
創建三個Fragment1 Fragment2 Fragment3
為三個Fragment創建三個布局文fragment1.xml、fragment2.xml、fragment3.xml
布局 activity_main.xm
fragment1.xml樣例
Fragment1樣例
另外的可以根據樣例進行修改
activity_main.xml內容
activity打開時我們需要顯示一個fragment,也就是需要先向容器中添加一個fragment
這是就能顯示第二個fragment了,那麼如何切換不同的fragment呢,切換的過程如下
開啟事務
調用事務的replace方法,將當前容器的fragment替換為新的fragment
提交事務
初始化時顯示的是 fragment2
實踐1 :fragment2------點擊按鈕frag1-----按返回鍵--------退出應用
實踐2: fragment2-----點擊按鈕frag3 -----按返回鍵--------返回到fragment2
為啥會出現上面的情況,原因就是切換到fragment3時,調用了addToBackStack方法,這時會將fragment2先入棧,然後再切換到fragment3,按返回鍵的時候fragment3銷毀,fragment2出棧顯示,而切換到fragme1時沒有將fragme2入棧,所以fragment2就直接銷毀了,再按返回鍵就直接退出應用了。
『貳』 如何在一個activity中添加一個fragment
你能夠像一個視圖那樣給Fragment指定布局屬性。下例說明了給Activity指定兩個Fragment的布局文件。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.example.news.ArticleListFragment"
android:id="@+id/list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.example.news.ArticleReaderFragment"
android:id="@+id/viewer"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
在<fragment>元素中的android:name屬性指定了在布局中要實例化的Fragment。
當系統創建這個Activity布局時,它實例化在布局中指定的每一個Fragment,並且分別調用onCreateView(),來獲取每個Fragment的布局。然後系統會在Activity布局中插入通過<fragment>元素中聲明直接返回的視圖。
註:每個Fragment需要一個唯一的標識,這樣能夠在Activity被重啟時系統使用這個ID來恢復Fragment(並且你能夠使用這個ID獲取執行事務的Fragment,如刪除)。有三種給Fragment提供ID的方法:
A. 使用android:id屬性來設置唯一ID;
B. 使用android:tag屬性來設置唯一的字元串;
C. 如果沒有設置前面兩個屬性,系統會使用容器視圖的ID。
『叄』 安卓開發 怎麼在adapter裡面使用fragmenttransaction
自從Android 3.0中引入fragments
的概念,根據詞海的翻譯可以譯為:碎片、片段。其目的是為了解決不同屏幕分辯率的動態和靈活UI設計。大屏幕如平板小屏幕如手機,平板電腦的設計使得其有
更多的空間來放更多的UI組件,而多出來的空間存放UI使其會產生更多的交互,從而誕生了fragments 。
fragments
的設計不需要你來親自管理view hierarchy 的復雜變化,通過將Activity 的布局分散到frament
中,可以在運行時修改activity 的外觀,並且由activity 管理的back stack
中保存些變化。當一個片段指定了自身的布局時,它能和其他片段配置成不同的組合,在活動中為不同的屏幕尺寸修改布局配置(小屏幕可能每次顯示一個片段,而
大屏幕則可以顯示兩個或更多)。
Fragment必須被寫成可重用的模塊。因為fragment有自己的layout,自己進行事件響
應,擁有自己的生命周期和行為,所以你可以在多個activity中包含同一個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看作是activity的模塊化組件,它擁有自己的生命周期
Fragment是activity的界面中的一部分或一種行為。你可以把多個Fragment們組合到一個activity中來創建一個多面界面並且
你可以在多個activity中重用一個Fragment。你可以把Fragment認為模塊化的一段activity,它具有自己的生命周期,接收它自
己的事件,並可以在activity運行時被添加或刪除。
Fragment不能獨立存在,它必須嵌入到activity中,而且
Fragment的生命周期直接受所在的activity的影響。例如:當activity暫停時,它擁有的所有的Fragment們都暫停了,當
activity銷毀時,它擁有的所有Fragment們都被銷毀。然而,當activity運行時(在onResume()之後,onPause()之
前),你可以單獨地操作每個Fragment,比如添加或刪除它們。當你在執行上述針對Fragment的事務時,你可以將事務添加到一個棧中,這個棧被
activity管理,棧中的每一條都是一個Fragment的一次事務。有了這個棧,就可以反向執行Fragment的事務,這樣就可以在
Fragment級支持「返回」鍵(向後導航)。
顯示Fragment時(跟用戶交互)要調用的核心的生命周期方法如下:
1. 把Fragment對象跟Activity關聯時,調用onAttach(Activity)方法;
2. Fragment對象的初始創建時,調用onCreate(Bundle)方法;
3. onCreateView(LayoutInflater, ViewGroup, Bundle)方法用於創建和返回跟Fragment關聯的View對象;
4. onActivityCreate(Bundle)方法會告訴Fragment對象,它所依附的Activity對象已經完成了Activity.onCreate()方法的執行;
5. onStart()方法會讓Fragment對象顯示給用戶(在包含該Fragment對象的Activity被啟動後);
6. onResume()會讓Fragment對象跟用戶交互(在包含該Fragment對象的Activity被啟恢復後)。
Fragment對象不再使用時,要反向回調的方法:
1. 因為Fragment對象所依附的Activity對象被掛起,或者在Activity中正在執行一個修改Fragment對象的操作,而導致Fragment對象不再跟用戶交互時,系統會調用Fragment對象的onPause()方法;
2. 因為Fragment對象所依附的Activity對象被終止,或者再Activity中正在執行一個修改Fragment對象的操作,而導致Fragment對象不再顯示給用戶時,系統會調用Fragment對象的onStop()方法。
3. onDestroyView()方法用於清除跟Fragment中的View對象關聯的資源;
4. Fragment對象的狀態被最終清理完成之後,要調用onDestroy()方法;
5. 在Fragment對象不再跟它依附的Activity關聯的時候,onDetach()方法會立即被調用
『肆』 Android Fragment 如何添加到一個LinearLayout 中還有Fragment到底如何使用越詳細越好通俗一點。
如果是比較低的版本用的是supportv4兼容包的話
布局中無法使用Fragment標簽
最好是在布局裡用xml文件寫一個framelayout的標簽。
寫一個子類繼承Fragment。
在FragmentActivity中使用Fragment。綁定。添加。移除。。此時要與Framelayout組件的id綁定。
要執行操作此時要得到FragmentManager 並且通過FragmentTransaction來提交事務。
這里就和官方demo上的用法一樣了
要注意的是最好不要再別的地方new一個Fragment 。Fragment的生命周期會受到相關Activity的影響。。最好在自己裡面定義靜態的newInstance方法。
希望能幫助你。
『伍』 怎樣用android studio創建fragment
在src main裡面 選中所在包,右鍵新建Fragment,第一行空的Fragment,勾選創建布局,不勾包含構建出廠方法
『陸』 Android 怎麼將fragment 動態地添加到布局中的任意位置
我們通常是用
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_view, fragment).commit();
來添加fragment到指定的視圖位置。所以你的需求只需你動態的改變需要替換的這個view的位置就好了,替換流程還是不變的。
動態的改變view的位置,這需要你在java代碼里動態的設置view的位置。
『柒』 android studio怎麼實現fragment
這跟AS沒有任何關系。在Eclipse及其他有android開發的IDE上都可以實現。實現步驟如下:
建立一個Fragment(代碼里創建)。這里邊主要是重寫那個返回值是View的方法,因為你要構造Fragment的界面。
將Fragment添加到界面中。主要通過事務管理類進行添加及替換Fragment(FragmentTransction ft =getFragmentManager().beginTransaction())
『捌』 如何引入android-support-v4/Fragment
1將libs文件夾中的android-support-v4添加到構建路徑,選中文件夾中的android-support-v4.jar包,滑鼠右鍵選中「Build Path——Add to Build Path」,那麼在當前項目的Referenced Libraries下多了添加的android-support-v4包.
2選中當前項目,滑鼠右鍵「Build Path——Configure Build Path」在右邊窗口中看到上一步添加的android-support-4包,然後展開,看到Source attachment:(None),說明我們的源碼還沒關聯,點擊「Edit」按鈕開始關聯
3在彈出的「Source Attachment Configure」配置窗口中,第一個選項「Workspace location」選擇當前工作間的路徑,第二個選項「External location」選擇外部的路徑,我們的android-support-v4源碼存放在sdk的Extras文件夾中,我們選擇第一個選項,
4選擇「External location」後,我們發現旁邊有「External file」和「External folder」兩個按鈕,External file選擇的是JAR或ZIP壓縮包,External folder選擇的是文件夾,這里我們選擇「External folder」
5在本地找到安裝SDK所在目錄,並在該目錄中找到extras文件夾,依次進入到src目錄(/sdk/extras/android/support/v4/src"),選中src文件夾即可。
『玖』 fragmentactivity怎麼在androidmanifest添加
1.{
2.<activity
android:name="com.test.MyFragmentActivity"
android:label="@string/app_name">
</activity>
3.和activity添加方式一樣的
『拾』 Android的drawerlayout側拉出的菜單如何添加fragment呢
在Android support.v4 中有一個抽屜視圖控制項DrawerLayout。使用這個控制項,可以生成通過在屏幕上水平滑動打開或者關閉菜單,能給用戶一個不錯的體驗效果。
最近在項目中,設計中有用到這個效果,但是是左右兩邊都能劃出這樣的一個菜單效果。經過使用發現,在xml布局中和代碼中,幾乎是添加添加同樣的代碼,就可以實現這種作用兩種菜單的效果。