FragMent的静态加载和动态加载

 <fragment
        android:name="com.example.myfragment.MyFragment"
        android:id="@+id/myfragment_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />


以上就是静态加载所用的布局,android:name属性中是MyFragment.java的全名,android:id中是Fragment的唯一标识(这个必须得加,否则报错,也可用android:tag属性来作唯一标识)。

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //做一个简单的UI操作,证明静态加载时我们可以直接获取到
        //Fragment中的UI控件
        TextView tv = (TextView) findViewById(R.id.textView);
        tv.setText("床前明月光");
    }
}
证明是可以直接获取id的


实现动态加载,我们需要先了解Fragment事务。熟悉数据库的同学都知道,事务指的就是一种原子性、不可拆分的操作。所谓的Fragment事务就是: 对Fragment进行添加、移除、替换或执行其它动作,提交给Activity的每一个变化。 这就是Fragment事务。

Fragment是UI模块,自然在一个Activity中可以不只有一个模块,所以Android提供了FragmentManage类来管理Fragment,FragmentTransaction类来管理事务。我们对Fragment的动态加载就是先将添加、移除等操作提交到事务,然后通过FragmentManage完成的。

通过FragmentManager.beginTransaction()我们可以开始一个事务。在事务中,我们可以对Fragment进行的操作以及对应的方法如下:
添加:add()
移除:remove()
替换:replace()
提交事务:commit()
上面几个是比较常用的,还有attach()、detach()、hide()、addToBackStack()等方法。
我们需要注意的是,Fragment以ID或Tag作为唯一标识,所以remove和replace的参数是Fragment,这个Fragment目标Fragment一致。在下面的示例里,我使用了一个栈记录所有添加的Fragment,然后在移除时使用。


       // 开启一个新事务
   transaction = manager.beginTransaction();
   // 使用add方法添加Fragment,第一个参数是要把Fragment添加到的布局Id
   // 第二个就是要添加的Fragment
      transaction.add(R.id.fragments, fragment);
      // 提交事务,否则添加就没成功
      transaction.commit();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值