Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

Android学习笔记(46):Fragment

$
0
0

Fragment是Android3.0引入的新API,Fragment代表Activity子模块,可以理解为Activity的片段,Fragment本身即为片段的意思。

Fragment的生命周期受它所在的Activity的生命周期的控制。

Android3.0引入Fragment的初衷是为了适应大屏幕的平板电脑,开发者用Fragment对UI组件进行分组、模块化管理,可以方便的在运行过程中动态更新Activity的用户界面。

 

Fragment的生命周期:

下图展示了Fragment的生命周期和其与Activity的关系


其中:

onAttach(Activity)

当Fragment与Activity发生关联时调用。

onCreate(BundlesavedStatus)

创建Fragment时回调。

onCreateView(LayoutInflater,ViewGroup,Bundle)
创建该Fragment的视图

onActivityCreated(Bundle)

当Activity的onCreate方法返回时调用

onStart()

启动Fragment时回调

onResume()

恢复Fragment时调用,onStart()方法后一定会回调onResume()方法

onPause()

暂停Fragment时回调

onStop()

停止Fragment时回调

onDestoryView()

与onCreateView想对应,当该Fragment的视图被移除时调用

onDestroy()

销毁Fragment时回调

onDetach()

与onAttach相对应,当Fragment与Activity关联被取消时调用,在onDestroy()方法后一定会调用onDetach()方法

 

创建Fragment:

1.     继承Fragment,重写onCreateView决定Fragemnt的布局

2.     将Fragment添加到Activity。

 

将Fragment添加到Activity有两种方法:

1.     在布局文件中使用<fragment…/>元素添加Fragment,<fragment…/>元素的android:name属性指定Fragment的实现类。

2.     在Java代码中通过FragmentTransaction对象的add()方法来添加Fragment。

Activity的getFragmentManager()方法可以返回FragmentManager,FragmentManager对象的beginTransaction()方法即可开启并返回FragmentTransaction对象。

 

Fragment与Activity的相互获取:

1.     Fragment获取它所在的Activity:调用Fragment的getActivity()方法。

2.     Activity获取它包含的Fragment:调用Activity关联的FragmentManager的findFragmentById(int id)或findFragmentByTag(Stringtag)方法。

 

Fragment与Activity之间传递数据:

1.     Activity向Fragment传递数据:在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法。

2.     Fragment向Activity传递数据或Activity需要在Fragment运行中进行实时通信:在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口,这样Fragment即可调用该回调方法将数据传给Activity。

 

Fragment的管理:

FragmentManager的功能:

1.     findFragmentById(int id)或findFragmentByTag(String tag)方法获取指定Fragment。

2.     popBackStack()将Fragment从后台栈中弹出(模拟用户按下Back按键)。

3.     addOnBackStackChangeListener()注册一个监听器,用于监听后台栈的变化。

4.     获取FragmentTransaction对象

 

FragmentTransaction的方法:

transaction.add() 

往Activity中添加一个Fragment

transaction.remove()

从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。

transaction.replace()

使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~

transaction.hide()

隐藏当前的Fragment,仅仅是设为不可见,并不会销毁

transaction.show()

显示之前隐藏的Fragment

detach()

会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。

attach()

重建view视图,附加到UI上并显示。

transatcion.commit()

提交一个事务,commit方法一定要在Activity.onSaveInstance()之前调用。

 

作者:qq_18738333 发表于2017/3/29 10:33:53 原文链接
阅读:181 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>