Fragment重要函数

一、Fragment对象
1.void setArguments(Bundle args);  
这个函数为Fragment提供构造参数(也就是数据),参数以Bundle类型封装。因为官方不建议把数据的传递提供写在构造函数当中,因此提供了这个方法。

2.Bundle getArguments();  
通过这个函数可以获取到传递给Fragment的参数。可以再Fragment当中直接调用,获取传递的数据。

3.FragmentActivity getActivity();  
返回和当前Fragment关联的FragmentAcitivty对象。

4.FragmentManager getChildFragmentManager();  
返回内嵌在当前Fragment当中的FragmentManager,用于管理内嵌在当前的Fragment的Fragments。

5.FragmentManager getFragmentManager();  
返回和当前Fragment平行的FragmentManager,用于管理和当前Fragment平行的Fragments。

6.Fragment getParentFragment ();  
返回包含当前Fragment的父Fragment。

7.void onActivityCreated(Bundle savedInstanceState);  
当Fragment绑定的Activity创建的时候调用。

8.void onAttach(Activity activity);  
当Fragment绑定到Activity的时候调用,这是Fragment生命周期第一次调用的函数。

9.void onDestroy();  
当Fragment不再使用的时候调用。

10.void onDestroyView();  
当视图和Fragment分离的时候调用。

11.void onInfate(Activity activity, AttributeSet attrs, Bundle savedInstanceState);  
有同学可能注意到,为什么不会调用这个函数呢?这个函数只有当你的Fragment写在XML布局文件中显示的时候,该函数才会调用,并且这个函数调用在onAttach之前。

  
二、FragmentManager对象
1.void addOnBackStackChangedListener(FragmentManager.OnBackStackChangedListener listener);  
为Fragment的后台堆栈添加一个监听器,用于监听堆栈的改变情况。

2.FragmentTransaction beginTransaction();  
开启一个事务,用于Fragment的一系列处理。

3.Fragment findFragmentById(int id);  
通过Fragment的ID找到Fragment,这个ID可以是XML中的也可以是通过事务动态添加进去的。

4.Fragment findFragmentByTag(String tag);  
通过Fragment的Tag找到Fragment,这个Tag可以是XML中的也可以是通过事务动态添加进去的。

5.FragmentManager.BackStackEntry getBackStackEntryAt(int index);  
根据序号返回后台堆栈中的BackStackEntry对象,最底的序号为0。

6.int getBackStackEntryCount();  
返回堆栈的总数目。

7.void popBackStack();  
弹出堆栈中的一个并且显示,也就是代码模拟按下返回键的操作。

8.void popBackStack(String name, int flags); 针对第一个参数,如果name为null,那么只有顶部的状态被弹出;如果name不为null,并且找到了这个name所指向的Fragment对象;根据flags的值,如果是flag=0,那么将会弹出该状态以上的所有状态;如果flag=POP_BACK_STACK_INCLUSIVE,那么将会弹出该状态(包括该状态)以上的所有状态。

9.void popBackStack(int id, int flags);  
针对第一个参数,如果该id找不到,那么什么都不做;否则根据flags的值,如果是flag=0,那么将会弹出该状态以上的所有状态;如果flag=POP_BACK_STACK_INCLUSIVE,那么将会弹出该状态(包括该状态)以上的所有状态。

10.boolean popBackStackImmediate (int id, int flags);  
和popBackStack(int id, int flags)类似,不同的是这个事立马弹出,和executePendingTransactions()方法之后的效果一样。如果有东西弹出,返回为true;否则就是false。

11.boolean popBackStackImmediate (String name, int flags);  
和popBackStack(String name, int flags)类似,不同的是这个事立马弹出,和executePendingTransactions()方法之后的效果一样。如果有东西弹出,返回为true;否则就是false。

12.boolean popBackStackImmediate();  
与popBackStack()方法类似,其他参考上面两个。

13.void removeOnBackStackChangedListener (FragmentManager.OnBackStackChangedListener listener);  
移除监听堆栈的监听器。

  
三、FragmentTransaction对象
1.FragmentTransaction add(Fragment fragment, String tag);  
通过调用add(int, Fragment, String)方法,传入containerViewId为0。

2.FragmentTransaction add(int containerViewId, Fragment fragment);  
通过调用add(int, Fragment, String)方法,传入tag为null。

3.FragmentTransaction add(int containerViewId, Fragment fragment, String tag);  
添加一个Fragment到Activity中。

4.FragmentTransaction addToBackStack(String name);  
添加这个Fragment到后台堆栈中。

5.FragmentTransaction attach(Fragment fragment);  
在fragment detach之后再次绑定到视图当中。

6.int commit();  
提交事务,后台执行事务的操作。

7.int commitAllowingStateLoss();  
和commit()差不多,但是在Activity状态保存了之后执行commit()。

8.FragmentTransaction detach(Fragment fragment);  
从UI中解除Fragment的绑定。

9.FragmentTransaction remove(Fragment fragment);  
移除一个已经存在了的Fragment。

10.FragmentTransaction replace(int containerViewId, Fragment fragment, String tag);  
替换一个已经存在了的Fragment(先remove,在add)。

11.FragmentTransaction replace(int containerViewId, Fragment fragment);  
调用replace(int containerViewId, Fragment fragment, String tag),但是tag为null。

12.FragmentTransaction setCustomAnimations(int enter, int exit, int popEnter, int popExit);  
设置进入/退出的动画效果(资源文件)。这个必须位于replace、add、remove之前,否则效果不起作用。四个参数分别表示:添加、移除、从Backstack中pop出来、进入的动画效果。

13.FragmentTransaction setCustomAnimations(int enter, int exit);  
设置进入退出的动画效果。

14.FragmentTransaction setTransition(int transit);  
设置切换效果。目前API提供:TRANSIT_NONE、 TRANSIT_FRAGMENT_OPEN、TRANSIT_FRAGMENT_CLOSE三种。

15.FragmentTransaction setTransitionStyle(int transit);  
设置切换的风格。

16.FragmentTransaction hide(Fragment fragment);  
隐藏一个存在的Fragment。

17.FragmentTransaction show(Fragment fragment);  
显示一个之前隐藏的Fragment。

10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onAttach // 第一次进入,显示TabA
10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onCreate
10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onCreateView
10-10 11:55:41.175: INFO/System.out(18368): AAAAAAAAAA____onActivityCreated
10-10 11:55:41.179: INFO/System.out(18368): AAAAAAAAAA____onStart
10-10 11:55:41.179: INFO/System.out(18368): AAAAAAAAAA____onResume
10-10 11:55:44.980: INFO/System.out(18368): AAAAAAAAAA____onPause // 从TabA切换到TabB(TabA调用onPause)
10-10 11:55:44.980: INFO/System.out(18368): Extra—- 1 checked!!!
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onAttach
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onCreate
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onCreateView
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onActivityCreated
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onStart
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onResume
10-10 11:55:52.062: INFO/System.out(18368): BBBBBBBBBBB____onPause // 从TabB切换到TabC(TabB调用onPause)
10-10 11:55:52.062: INFO/System.out(18368): Extra—- 2 checked!!!
10-10 11:55:52.082: INFO/System.out(18368): CCCCCCCCCC____onAttach
10-10 11:55:52.082: INFO/System.out(18368): CCCCCCCCCC____onCreate
10-10 11:55:52.086: INFO/System.out(18368): CCCCCCCCCC____onCreateView
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onActivityCreated
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onStart
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onResume
10-10 11:56:06.535: INFO/System.out(18368): CCCCCCCCCC____onPause // 从TabC切换到TabB(TabC调用onPause)
10-10 11:56:06.535: INFO/System.out(18368): BBBBBBBBBBB____onResume // 从TabC切换到TabB(TabB调用onResume)
引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值