本篇我们就来讲讲Fragment管理中的 Add() 方法 Add() 在我们动态的添加、管理Fragment中,Add属于最基础的方法了; 用法也很简单,如下就是向Activity添加一个Fragment: getSupportFragmentManager()
本篇我们就来讲讲Fragment管理中的 Add() 方法 Add()在我们动态的添加、管理Fragment中,Add属于最基础的方法了; 用法也很简单,如下就是向Activity添加一个Fragment:
一般时候我们使用到Fragment的时候,都是不止一个,比如微信界面,底部导航有四个按钮,分别对应不同的四个Fragment,像这种的每点击一次底部按钮就切换一下界面的话,我们就可以使用Add()外加hide和show进行组合 下面我们简单实现一下,这里我们就弄两个Fragment, 这里我们的MainActivity的布局如下:
下面看MainActivity的内容:
这里我们写的比较简单,主要是为了看一下他们的执行生命周期,在这里我把所以log都打印出来了 刚开始运行时的log如下:
此时我们点击FragmentB按钮;
然后我们在反复点击FragmentA和FragmentB按钮,发现没有任何log打印,此时证明FragmentA和FragmentB通过hide和show方法进行切换时,都只会初始化一次, 下面我们看向replace这个方法 replace: 首先replace方法,其实是remove和add方法的组合; remove就是将一个Fragment从FragmentManager中删除,如果我们切换下一个Fragment时,上一个Fragment不需要了,可以直接使用replace,如果我们还需要的话,API中也提供了相应的方法,那就是加入回退栈addToBackStack() 下面我们把MainActivity中的代码改一下:
这里我们就改了一下OnClick中的代码,这时我们再打印一下log看看: 首先初始化时是一致的: 这里写代码片 此时我们点击FragmentB:
我们发现Fragment调用了destroy方法,此时我们再点击FragmentA:
此时发现FragmentA没有切换过来,这是因为,我们在FragmentManager中找到了FragmentA的实例,但是此时,FragmentA的界面已经被销毁了,所以我们看见的还是FragmentB,此时我们的OnClick改成如下:
这时再打印一下log,
此时发现每次切换时,都会调用Fragment都会重新调用onCreateView()到onDestroyView()的所有方法,其实就是Fragment的布局层整个销毁到重建的过程 注: 当我们进行Fragment嵌套时,如果我们点击返回键,不想回到上一个Fragment,而想直接回到更往前一个,或者更往前的Fragment,我们可以使用FragmentManager.popBackStackImmediate (String tag, int flags)方法,弹出TAG为tag的Fragment,同时把此Fragment以上的Fragment全都弹出(弹出回退栈,即彻底销毁,detach) |
2022-04-23
2022-01-26
2021-11-15
2021-08-02
2019-12-15