大三Android——Fragment

                                               Fragment 

  • Fragment是区域性UI

Android的界面通常是Activity实现,但有时需要把一个单独的Activity分割为一个多区域的UI,这时候就用到了Fragment,一个Activity可以在每一个区域嵌套一个Fragment;


  • Fragment有自己的生命周期

可以处理自己的输入事件,并可以在Activity运行时动态添加或删除Fragment。

重要生命周期阶段:

onAttach(Activity):当Fragment第一次与Activity产生关联时调用,以后不在调用。

onCreate():当onAttach()执行完后会立刻调用此方法通常被用于读取保存的状态值,获取或初始化一些数据,但是该方法不执行,窗口是不会显现的,因此如果获取的数据需要访问网络,最好新开线程。

onCreateView(LayoutInflater,ViewGroup,Bundle):创建Fragment中显示的view,初始化加载布局文件(通过打气筒 详情见打气筒篇章)。

onActivityCreated(Bundle):在Activity.onCreate()方法调用后会立刻调用此方法,表示窗口已经初始化完毕,此时可以开始调用控件了。


  • Fragment不能独立存在

Fragment必须嵌入到Activity中,而且Fragment的生命周期直接受到所在Activity的影响。

Fragment必须部署于Activity的视图的ViewGroup里面,同时,Fragment必须定义自己的布局文件(fragment01.xml)


  • Fragment基本用法步骤

第一步:创建Fragment

  1. 为Fragment创建layout布局文件 fragment01.xml
  2. 新建一个继承于Fragment的子类,并通过onCreateView()方法加载布局文件。
public class Fragment01 extends Fragment{

    public View onCreateView(LayoutInflater inflater,ViewGroup container,
        Bundle savedInstanceState){
            
        //打气筒原理
        //inflater用来装载布局文件,container表示ViewGroup对象,savedInstanceState获取保存的状态
        return inflater.inflate(R.layout.fragment01,container,flase);

    }

}

第二步:添加Fragment到Activity(两种方法)

  1. 在Activity布局文件中直接声明Fragment(静态添加)
    <LinearLayout
    
        >
        
        <fragment 
            android:id="@+id/fragment01"
            android:name="com.wqt.fragmentTest.Fragment01"
            android:width="wrap_content"
            android:height="match_parent"
           />
        
        <fragment 
            android:name="com.wqt.fragmentTest.Fragment02"
     
           />
    
    
    </LinearLayout>

     

  2. 在java代码中添加Fragment到Activity的一个ViewGroup里(动态添加)

①提前在Activity的布局文件main.xml中设置好ViewGroup容器

<LinearLayout

    >
    <LinearLauout
        android:id="@+id/linear"
        
        />        
</LinearLayout>

②在java代码中动态添加(获取FragmentManager,beginTransaction开启事务,通过replace方法向容器加入,最后提交事务)

FragmentManager fm = getFragment();   
FragmentTracsaction ft = fm.beginTransaction();  //开始事务
Fragment01 fragment01 = new Fragment01();
ft.replace(R.id.linear,fragment01);    //ViewGroup的id,Fragment的实例  
ft.commit();    //提交事务

  • Fragment之间的通信

通过getActivity这个方法实现fragment之间的通信。

getActivity方法可以让Fragment获取关联的Activity,然后再调用Activity的findViewById方法,就可以获取到与这个Activity关联的其他Fragment的视图了。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值