关于fragment的实例小分析

来源:互联网 发布:ug线切割编程 编辑:程序博客网 时间:2024/04/29 12:49

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销毁状态,


1 0
原创粉丝点击