android -- 关于fragment

生命周期

1.Fragment有静态和动态两种使用方式
静态是指将fragment写在acticity的xml中当做普通控件。
动态是指在代码中添加fragment,动态使用时,需要在布局文件中为 Fragment 添加一个容器,以安排 Fragment 在 activity 视图中的位置。实践中常选用 FrameLayout 作为容器

2.Fragment的动态添加:

FragmentManager fm = getFragmentManager();  
        FragmentTransaction transaction = fm.beginTransaction();  
        mFragment = new MyFragment();  
        transaction.replace(R.id.id_content, mFragment);  
        transaction.commit();  

对fragment的操作从beginTransaction()开始,commmi()结束。
3.Fragmen的创建

方法1

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View root = inflater.inflate(layoutId(),container, false);
        return root;
}

方法2

public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View root = inflater.inflate(layoutId(), null);
        return root;
}

方法1:因为我们控制fragment时要手动add,所以此处attachToRoot一定是false。
方法2:root一定要传null,此时子view不会得到母view的布局信息,子view里一堆的match_parent也就毫无用途。
总结:90%的情况下,我们使用fragment此处一定要用方法1。有一种情况,如创建dialog fragment时,不需要得到母布局参数信息可以用方法2。

tips:
1、获取FragmentManage的方式:getFragmentManager()

2、主要的操作都是FragmentTransaction的方法

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

transaction.add() //往Activity中添加一个Fragment

transaction.remove() //从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈,这个Fragment实例将会被销毁。

transaction.replace()//使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体

transaction.hide()//隐藏当前的Fragment,仅仅是设为不可见,并不会销毁

transaction.show()//显示之前隐藏的Fragment

detach()//会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。

attach()//重建view视图,附加到UI上并显示。

transatcion.commit()//提交一个事务

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值