当前位置: 移动技术网 > 移动技术>移动开发>Android > Android Fragment

Android Fragment

2018年09月03日  | 移动技术网移动技术  | 我要评论

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“

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网