关于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销毁状态,
- 关于fragment的实例小分析
- 关于fragment的一个实例
- 关于Fragment的一些分析
- Fragment小实例
- 关于Fragment的一点小技巧
- Fragment实例化,Fragment生命周期源码分析
- 关于切换Fragment的不重新实例化的解决方法
- 关于Fragment实例化时报错的问题
- Android学习小Demo(20)关于Fragment的应用
- 关于android3.0以后引入fragment碎片的小问题
- 关于继承的应用小实例
- 关于ORACLE事务的小实例
- javascript 关于Bom的小实例
- 关于Fragment 不响应onActivityResult的情况分析
- 关于Fragment 不响应onActivityResult的情况分析
- 关于Fragment 不响应onActivityResult的情况分析
- 关于Fragment 不响应onActivityResult的情况分析
- 关于Fragment 不响应onActivityResult的情况分析
- JSON
- mybatis的一些笔记
- 从西刺代理爬取代理ip,并验证是否可用
- 多级城市联动
- 背包九讲01-01背包问题阅读笔记
- 关于fragment的实例小分析
- android 通过Application类 共享全局数据
- Xcode8.0程序运行后打印出了一堆东西
- 继承后的初始化顺序
- 几何 两元相交的面积计算问题 HDU 5120 Intersection(几何模板)
- 学习python写网络爬虫(二)
- android为程序添加版本自动更新
- solr 版本完整版
- Android布局中涉及的一些属性