Fragment详解 (2)Manager

本文详细介绍了Android中Fragment的管理,包括FragmentManager和FragmentTransaction的使用,如add()、replace()、remove()方法,并通过实例展示了如何在MainActivity中操作Fragment。还探讨了FragmentTransaction的回滚和回退栈的监听,强调了事务回退是以提交的事务为单位进行的。
摘要由CSDN通过智能技术生成

一、概述

 1、FragmentManager

要管理activity中的fragments,你就需要使用FragmentManager。通过getFragmentManager()或getSupportFragmentManager()获得 
常用的方法有:

[java]  view plain   copy
  在CODE上查看代码片 派生到我的代码片
  1. manager.findFragmentById();  //根据ID来找到对应的Fragment实例,主要用在静态添加fragment的布局中,因为静态添加的fragment才会有ID  
  2. manager.findFragmentByTag();//根据TAG找到对应的Fragment实例,主要用于在动态添加的fragment中,根据TAG来找到fragment实例  
  3. manager.getFragments();//获取所有被ADD进Activity中的Fragment  

2、FragmentTransaction

一般用来对当前的Fragment进行管理,包括add,replace,remove;
常用的针对Fragment的方法有:

[java]  view plain   copy
  在CODE上查看代码片 派生到我的代码片
  1. //将一个fragment实例添加到Activity的最上层  
  2. add(int containerViewId, Fragment fragment, String tag);  
  3. //将一个fragment实例从Activity的fragment队列中删除  
  4. remove(Fragment fragment);  
  5. //替换containerViewId中的fragment实例,注意,它首先把containerViewId中所有fragment删除,然后再add进去当前的fragment  
  6. replace(int containerViewId, Fragment fragment);  
还有hide()、show()、detach()、attach()这些函数,我们下篇再讲,这节先对Fragment的用法有一个初步了解;

二、add()、replace()、remove()使用方法示例

下面就通过例子来看看以上几个函数的使用方法吧。 
效果图如下:

  • 点击“ADD Fragment1”,在将Fragment1添加到Activity的container中;
  • 点击“ADD Fragment2”,将Fragment2添加到Activity的container中;
  • 点击“Remove Fragment2”,将Fragment2的实例从container中移除,移除之后,就显示出其下方的fragment1的视图出来了。
  • 再点击”replace Fragment1”,将container中的视图移除,然后添加上fragment2的视图。 


那现在我们从头开始构建这个工程:

1、新建两个fragment1.xml 和 fragment2.xml:

从效果图中也可以看出,这两个XML什么都没有,只是通过背景色和文字来区别当前是哪个Fragment的XML布局文件而已,他们的布局代码如下:

fragment1.xml:

[html]  view plain   copy
  在CODE上查看代码片 派生到我的代码片
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="match_parent"  
  4.     android:background="#ff00f0"  
  5.     android:orientation="vertical" >  
  6.       
  7.     <TextView  
  8.         android:layout_width="wrap_content"  
  9.         android:layout_height="wrap_content"  
  10.         android:text="This is fragment 1"  
  11.         android:textColor="#000000"  
  12.         android:textSize="25sp" />  
  13.   
  14. </LinearLayout>  
fragment2.xml:
[html]  view plain   copy
  在CODE上查看代码片 派生到我的代码片
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="match_parent"  
  4.     android:background="#ffff00"  
  5.     android:orientation="vertical" >  
  6.       
  7.     <TextView  
  8.         android:id="@+id/fragment2_tv"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="This is fragment 2"  
  12.         android:textColor="#000000"  
  13.         android:textSize="25sp" />  
  14.       
  15. </LinearLayout>  

2、建立对应的Fragment类:Fragment1和Fragment2

Fragment1:

[java]  view plain   copy
  在CODE上查看代码片 派生到我的代码片
  1. import android.os.Bundle;  
  2. import android.support.v4.app.Fragment;  
  3. import android.view.LayoutInflater;  
  4. import android.view.View;  
  5. import
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值