Android Fragment
程序员文章站
2022-10-04 23:46:06
Fragment生命周期 Fragment比Activity多的生命周期 Fragment引入布局 重写onCreateView方法引入布局 Fragment事务 1.基本方法 使用事务之前,需要先获取FragmentManager Fragment的回退栈 通过Activity维护一个回退栈来保存 ......
fragment生命周期
fragment比activity多的生命周期
onattach() //fragment和activity建立关联的时候调用,被附加到activity中去 oncreate() //系统会在创建fragment时调用此方法,可以初始化资源文件等 oncreateview() //系统会在fragment首次绘制其用户界面时调用此方法。该方法中返回的 view 必须是fragment布局的根视图,也可以返回 null。 onviewcreated() //在fragment被绘制后,调用此方法,可以初始化控件资源 onactivitycreated() //activity被渲染绘制出来后 ondestroyview() //布局被移除时调用 ondetach() //fragment和activity解除关联的时候调用
fragment引入布局
重写oncreateview方法引入布局
public class fragment extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { return inflater.inflate(r.layout.fragment, container, false); } }
fragment事务
1.基本方法
使用事务之前,需要先获取fragmentmanager
//事务开启 fragmenttransaction transaction = fm.bengintransatcion(); //添加一个fragment transaction.add() //清除一个fragment,如果没有添加进回退栈实例会被销毁 transaction.remove() //移除一个fragment transaction.detach() //替换一个fragment transaction.replace() //隐藏一个fragment transaction.hide() //显示一个fragment transaction.show() //添加事务动画 transaction.settransition() //添加进回退栈 transaction.addtobackstack(string) //提交事务 transatcion.commit()
fragment的回退栈
通过activity维护一个回退栈来保存每次fragment事务发生的变化
如果将fragment任务添加到回退栈,当用户点击后退按钮时将看到上一次的保存的fragment
如果使用replace()方法,fragment没有添加到回退栈,fragment将会被销毁
如果使用remove()方法,fragment的视图将会销毁
如果使用hide()方法隐藏fragment,然后添加到回退栈,再次back,view视图将会保存
添加回退栈addonbackstackchangedlistener()监听器
fragment与activity之间的交互
//获取fragment管理器 getfragmentmanager() //获取fragment的实例 findfragmentbyid()或者findfragmentbytag() //获取绑定的activity的实例 getactivity() //避免重复创建实例 @override protected void oncreate(bundle savedinstancestate){ super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); if(savedinstancestate == null){ //在创建fragment时调用oncreate方法判断savedinstancestate 非空 } } //旋转屏幕,不重新加载activity,保存fragment android:configchanges="orientation|screensize“
上一篇: 使用pandas操作mysql数据
下一篇: 因为写了一条讽刺百度的段子,被百度告了