欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android Fragment

程序员文章站 2022-10-04 23:46:06
Fragment生命周期 Fragment比Activity多的生命周期 Fragment引入布局 重写onCreateView方法引入布局 Fragment事务 1.基本方法 使用事务之前,需要先获取FragmentManager Fragment的回退栈 通过Activity维护一个回退栈来保存 ......

fragment生命周期

Android 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“