Fragment的使用

Fragment的使用总结

简述:

Fragment是在Android3.0 (API level 11)开始引入新的API技术。
为了提高代码重用性和改善用户体验,我们将Activity中的UI组件进行分组和模块化管理。这些分组后的UI组件就是Fragment.

你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。

1.Fragment的生命周期

onAttach(Activity)

当Fragment与Activity发生关联时调用。

onCreateView(LayoutInflater, ViewGroup,Bundle)

创建该Fragment的视图

onActivityCreated(Bundle)

当Activity的onCreate方法返回时调用

onDestoryView()

与onCreateView想对应,当该Fragment的视图被移除时调用

onDetach()

与onAttach相对应,当Fragment与Activity关联被取消时调用

注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现

两种使用方法

1.静态注册:

把Fragment 当成一个控件直接在布局文件中添加


2.动态注册

动态使用Fragment三步走:

(1)android.app.Fragment 主要用于定义Fragment

        Fragment fragment = new Fragment();

(2)android.app.FragmentManager主要用于在Activity中操作Fragment

        getFragmentManager() //v4中,getSupportFragmentManager

(3)android.app.FragmentTransaction保证一些列Fragment操作的原子性

      FragmentTransaction transaction =fm.benginTransatcion();//开启一个事务

private void initDefaultFrament() {
     //获得一个布局管理器,主要在Activity中操作Fragment
    fragmentManager = getSupportFragmentManager();
    //开启一个事务
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    //给公共容器中添加碎片
    fragmentTransaction.add(R.id.GONG,fragmentone);
    //提交事务
    fragmentTransaction.commit();
    
    fragmentnew=fragmentone;
}
常用逻辑和方法

public void onClick(View v) {
    FragmentTransaction fragmentTransaction1 = fragmentManager.beginTransaction();
    switch (v.getId()){
        case R.id.button:
            if(fragmentone.isAdded()){
                fragmentTransaction1.hide(fragmentnew).show(fragmentone).commit();
            }else{
                //隐藏当前页面,然后添加新的页面,提交
                fragmentTransaction1.hide(fragmentnew).add(R.id.GONG,fragmentone).commit();
            }
            fragmentnew=fragmentone;
            break;
        case R.id.button2:
            if(fragmenttwo.isAdded()){
                fragmentTransaction1.hide(fragmentnew).show(fragmenttwo).commit();
            }else{
                //隐藏当前页面,然后添加新的页面,提交
                fragmentTransaction1.hide(fragmentnew).add(R.id.GONG,fragmenttwo).commit();
            }
            fragmentnew=fragmenttwo;
            break;
    }
transaction.add()  // 往Activity中添加一个Fragment
transaction.remove() // 删除
transaction.replace() // 替换
transaction.hide() // 隐藏当前的Fragment,仅仅是设为不可见,并不会销毁
transaction.show() // 显示之前隐藏的Fragment
detach() // 会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。
l attach() // 重建view视图,附加到UI上并显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值