关于fragment的实例小分析

本文详细介绍了Fragment在Android开发中的使用方法,包括如何将其附加到Activity、使用FragmentManager管理Fragment以及执行添加、替换和移除等操作。此外,还展示了如何利用FragmentTransaction进行事务管理,并通过实例演示了Fragment生命周期的不同阶段。

fragment 作为附着在活动(Activity)中的UI片段,在应用过程中非常重要。在使用过程中,注意以下几点:

附着的目标Activity需要继承Fragmentactivity,否则无法使用fragment;

要使用fragment 需要使用FragmentManager,要获取FragmentManager 需要在activity中调用 getFragmentManager;


在activity中使用fragment的好处是可以对fragment进行添加移除和替换;提交的一组fragment的变化作为一个事务,事务通过

FragmentTransaction来执行。还可以把fragment保存在activity的后退栈中,这样就可以让用户在fragment变化之间导航。

可以通过 FragmentManager来取得FragmentTracnaction的实例:

FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();

一个事务在同一时刻执行一组动作,可以用add,replace,remove等方法构成事务,然后commit提交 事务

在commit提交之前,可以使用addToBackStack()把事务条件到一个后退栈中,这个回退栈属于所有activity,有了它,当被覆盖的fragment不会直接进入销毁状态;

下面是关于fragment的一个实例,其中关于fragment事务的代码如下:

private void FragentOper() {
// TODO Auto-generated method stub
fm = getSupportFragmentManager();
FragmentTransaction trans = fm.beginTransaction();
trans.addToBackStack(null);
trans.add(R.id.actmain_framelayout, f1).commit();
}

关于fragment变化的代码如下:

public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.actmain_l1:
fm.beginTransaction().replace(R.id.actmain_framelayout, f1).commit();
// fm.beginTransaction().hide(f2).hide(f3).hide(f4).show(f1).commit();
break;
case R.id.actmain_l2:
fm.beginTransaction().replace(R.id.actmain_framelayout, f2).commit();
// fm.beginTransaction().hide(f1).hide(f3).hide(f4).show(f2).commit();
break;
case R.id.actmain_l3:
fm.beginTransaction().replace(R.id.actmain_framelayout, f3).commit();
// fm.beginTransaction().hide(f1).hide(f2).hide(f4).show(f3).commit();
break;
case R.id.actmain_l4:
fm.beginTransaction().replace(R.id.actmain_framelayout, f4).commit();
// fm.beginTransaction().hide(f1).hide(f2).hide(f3).show(f4).commit();
break;
default:
break;
}
}

该情况下 fragment启动运行时的生命周期是:

onAttach >onCreate>onCreateView>onActivityCreated>onStart>onResume 此时fragment 已激活,能参与事务变化;

当该fragment被其他fragment取代时 发生的生命周期是:

onPause>onStop>ondestroyView>

如果没有调用trans.addToBackStack(null);

则会fragment被替代时会直接 进入ondestroy销毁状态,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值