自从android4.0之后,fragment就被广泛使用,我们知道Fragment与Activity有所不同,也有相似之处。Activity有生命周期,Fragment也有生命周期,了解了Fragmnet的生命周期,我们才能在控制程序时游刃有余。
先来看看官方给出的fragment的生命周期图:
从上面可以看出Fragment有11个状态,测试代码如下:
public class RightFragment extends Fragment{ public static final String TAG = "RightFragment"; @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.d(TAG, "onAttach"); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "onCreate"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d(TAG, "onCreateView"); View view = inflater.inflate(R.layout.right_fragment, container, false); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.d(TAG, "onActivityCreated"); } @Override public void onStart() { super.onStart(); Log.d(TAG, "onStart"); } @Override public void onResume() { super.onResume(); Log.d(TAG, "onResume"); } @Override public void onPause() { super.onPause(); Log.d(TAG, "onPause"); } @Override public void onStop() { super.onStop(); Log.d(TAG, "onStop"); } @Override public void onDestroyView() { super.onDestroyView(); Log.d(TAG, "onDestroyView"); } @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy"); } @Override public void onDetach() { super.onDetach(); Log.d(TAG, "onDetach"); } }
运行程序,控制台输出:
跳到别的fragment时:
再次启动fragment时:(注意这里你不是按回退键)
Fragment之间是独立的,那么如何实现切换时前一个Fragment就会销毁,再次启动时,重新创建。那么如何实现类似activity的回退效果呢?
看下面的代码:
Fragment1 fragment1 = new Fragment1();
FragmentManager fragmentManager1 = getFragmentManager();
FragmentTransaction transaction1 = fragmentManager1. beginTransaction();
transaction1.replace(R.id.right_layout, fragment1);
transaction1.addToBackStack(null);
transaction1.commit();
实现回退效果,就需要添加 transaction1.addToBackStack(null);这一句,那么切换Fragment时,fragment不是被销毁,而是进入回退栈,当点击回退键时,栈顶fragment被销毁,之前的fragment替代栈顶fragment,显示在界面上。
有了activity的生命周期作为基础,Fragment的生命周期就容易理解多了。接下来就可以愉快的和代码玩耍了!
相关推荐
这个"Fragment生命周期演示Demo"可以帮助开发者直观地看到每个方法的调用顺序,以便在实际项目中正确地管理Fragment的状态。通过实践和调试这个Demo,开发者可以加深对Fragment生命周期的理解,从而编写出更高效、更...
这是Fragment生命周期的起点,通常在这里进行初始化工作,例如获取Activity的引用。 2. **onCreate()**: 在这里,系统会为Fragment分配内存,并初始化基本成员变量。通常用于设置布局或创建数据对象,但不应在此处...
6. **销毁(Destroyed)**:最后,`onDestroy()`标志着Fragment生命周期的结束。 了解这些生命周期状态后,开发者可以通过打印日志来跟踪Activity和Fragment的状态变化。例如,在每个生命周期方法中插入`Log.d()`...
Fragment生命周期的理解和熟练掌握对于高效、健壮的应用开发至关重要。在这个话题中,我们将深入探讨Fragment的生命周期以及如何实现动态切换。 Fragment的生命周期主要包括以下几个关键状态: 1. **创建过程**: ...
在"android fragment生命周期测试"中,我们主要关注的是Fragment在不同情况下的状态变化及其对应的方法调用。 Fragment的生命周期包括以下几个关键阶段: 1. **添加/插入(Add/Attach)**:当Fragment通过`...
2. **Fragment生命周期**:Fragment的生命周期嵌套在Activity中,包括onAttach(), onCreate(), onCreateView(), onViewCreated(), onStart(), onResume(), onPause(), onStop(), onDestroyView(), onDestroy(), ...
### Android中的Fragment生命周期详解 在Android开发中,`Fragment`是一种可以嵌入到`Activity`中的用户界面片段,它可以被重用在多个活动中,并且能够独立管理自己的生命周期。理解`Fragment`的生命周期对于构建...
Android fragment生命周期一张图解,一张图完全解释fragment的生命周期.看一遍就会
这是Fragment生命周期中最后的状态,用户可以与Fragment交互。 7. 当用户离开Fragment或系统需要回收资源时,将触发一系列的“恢复”方法,如`onPause()`、`onStop()`、`onDestroyView()`、`onDestroy()`和`...
在Android应用开发中,Activity和Fragment是两个至关重要的组件,它们构成了用户界面的主要部分,并各自拥有独特的生命周期。本文将深入探讨Activity和Fragment的生命周期,帮助开发者更好地理解和掌握这两个组件的...
在深入探究Fragment生命周期之前,我们需要先理解Activity的基础生命周期,因为Fragment的生命周期与之紧密相关。 Activity的生命周期包括:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()...
Fragment是Android应用开发中的一个重要组件,它允许在同一个Activity中包含多个可独立操作的界面单元。...如果你希望深入了解Fragment,可以参考我博客上的详细讲解,那里会有更多关于Fragment生命周期的实例和技巧。
fragment 代码示例
综上所述,这个"Activity和Fragment生命周期综合测试"DEMO涵盖了Android开发中的重要概念,包括Activity和Fragment的生命周期管理、ViewPager与Fragment的协同工作、以及页面滑动和选项卡切换的交互逻辑。...
Fragment生命周期Demo,详细使用可以查看: http://blog.csdn.net/u010049692/article/details/38926561 http://www.cnblogs.com/getherBlog/p/3945052.html
Fragment生命周期的理解和掌握对于开发复杂的Android应用至关重要。以下是对Fragment生命周期的详细解释: 1. **Fragment的创建过程:** - **onAttach()**:当Fragment与其关联的Activity建立联系时调用。在这个...
作者:【郭孝星】http://blog.csdn.net/allenwells 微博:【郭孝星的新浪微博】http://weibo.com/allenwells 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:...
在这个过程中,我们需要正确管理Fragment的生命周期,确保在切换时合理地调用各个生命周期方法。 此外,`SwitchFragment`可能还会涉及Fragment之间的通信。Fragment可以通过`getActivity()`方法获取到所属的...