Fragment各种情况下的生命周期及状态保存下什么情况下使用?

373 阅读1分钟

Fragment各种情况下的生命周期

正常情况下的生命周期是:onAttach-->onCreate()-->onCreateView-->onActivityCreated-->onStart-->onResume-->onPause-->onStop-->onDestoryView--> onDestory()-->onDetach()

如果添加到backStack中,调用remove()方法fragment的方法会走到onDestoryView,但不会执行onDetach().即fragment本身的实例是存在的,成员变量也存在,但是view被销毁了,如果新替换的Fragment已在BackStack中,则不会执行onAttch-->onCreate

Fragment状态保存onSaveInstanceState是哪个类的方法,在什么情况下使用?

在对应的FragmentActivity.onSaveInstanceState方法会调用FragmentController.saveAllState,其中会对mActive中各个Fragment的实例状态和View状态分别进行保存,当Activity在做状态保存和恢复的时候,在它其中的fragment自然也需要做状态保存和恢复。

此外还想介绍一下:

Fragment.startActivityForResult是和FragmentActivity的startActivityForResult的区别?

如果希望在Fragment的onActivityResult接收数据,就要调用Fragment.startActivityForResult,而不是Fragment.getActivity().startActivityForResult.

如何实现Fragment的滑动效果? 使用Viewpager+FragmentPagerAdapter+List

fragment之间传递数据的方式?

1).在相应的fragment中编写方法,在需要回调的fragment里获取对应的Fragment实例,调用相应的方法;

2)采用接口回调的方式进行数据传递; a)在Fragment1中创建一个接口及接口对应的set方法;b)在Fragment1中调用接口的方法: c)在fragment2中实现该接口

3)使用第三方开源框架EventBus