Fragment笔记~

今天介绍的是一些关于Fragment的一些简单测操作

Fragment的简单操作

一般对Framgnet操作分为两种情况,一种是add()Fragment对象另一种是replace()Fragment的形式

  • add()明显就是通过add来添加Fragment

  • replace()则是替换 可以简单理解为先add() Fragment在remove() Fragment

fragment的add方法

下面先给大家介绍Fragment的add()方法:
首先得获取Fragment的管理器FragmentManager. FragmentManager管理器也分为两种

  • getFragmentManager(); 这种是获取继承自Avtivity类的FragmentManager 已经不建议使用了
  • getSupportFragmentManager(); 这种是获取继承自FragmentActivity的FragmentManager’

然后通过FragmentManager对象beginTransaction() 此步骤类似于告诉Activity我要使用Fragment了你需要准备一下起到一个提醒的作用吧,提醒他需要开始工作了.
fragmentTransaction.addToBackStack(tag); 此方法是将当前传入的tag保存到栈中以便于回退栈使用
接下来就到了关键的地方了ragmentTransaction.add(R.id.ll_framgnet,fragment,tag);方法

  • add(int id,Fragment fragment,String tag); 第一个参数传的是Fragment要替换的id,为什么说是替换呢?其实Fragment也是一个控件,只不过他是依附于Activity的需要吧Activity的布局替换为Fragment,但是这里明明说的是add()为什么变成了替换呢?add只是先让Fragment添加Activity的布局而已,要显示的话还需要通过show()hide()方法来控制,这些有时间在说吧第二个参数就是需要添加的Fragment的对象,第三个参数是String类型的tag,可以传也可以不传
  • add(int id,Fragment fragment);
    最后要想使用必须commit()提交一下,不提交的话这段代码白写了.这就像跑步比赛,你都让人家准备了,不给他跑步的指令,他也是不会跑的.

在这里插入图片描述
在这里插入图片描述
最后直接调用此方法即可
在这里插入图片描述
接下来看看效果吧~
在这里插入图片描述

fragment的replace方法

在这里插入图片描述
add()和replace()方法看到的效果几乎是一样的,但他俩的区别也是很明显 ,add不会消除当前的Fragment只能通过show()和hide()来控制,二replace若启动下一个Fragment则会吧当前的Fragment给清除掉上面也提到过replace方法类似于先add()让在在remove吧~

Fragment的回退栈

来给大家介绍一下Fragment的回退栈,我也是刚整明白,就当笔记来写了.
在这里插入图片描述

前面2步骤就不在强调了,主要说一下supportFragmentManager.popBackStack()方法

  • supportFragmentManager.popBackStack() (4–>3–>2–>1)按顺序从外到里一个一个退
  • supportFragmentManager.popBackStack(tag,0) (根据传入的tag来退,传入的是2的fragment,则直接退到2,不包括自己本身)
  • supportFragmentManager.popBackStack(tag,FragmentManager.POP_BACK_STACK_INCLUSIVE);(根据传入的tag来退,传入的是2的fragment,则直接退到2,包括自己本身)在这里插入图片描述
    来看看效果吧~

supportFragmentManager.popBackStack() 效果

在这里插入图片描述

- supportFragmentManager.popBackStack(“fragment2”,0)效果

在这里插入图片描述

supportFragmentManager.popBackStack(“fragment2”,FragmentManager.POP_BACK_STACK_INCLUSIVE)效果

在这里插入图片描述

Fragment的移除栈

想要移除栈有两种简单的方法
在这里插入图片描述

  • 一种是直接传入需要移除的Fragment对象 注意:这里的对象必须和add时候的对象一致,不能重新new对象否则会没有效果.
  • 另一种是通过传入的tag来获取Frgment的实例然后在移除Fragment
    (supportFragmentManager.findFragmentByTag(tag);这个方法可以获取到Fragment的实例,做一些简单的操作)比如说改变Fragment2中TextView的值.

supportFragmentManager.findFragmentByTag(tag)效果

在这里插入图片描述

两种方法都特别简单,接下来看看效果吧~~

在这里插入图片描述

Fragment传值

传值的话我是通过Bundle来进行交互传值的
通过setArguments(Bundle bundle)来进行传值
通过getArguments(Bundle bundle)来获取值
Bundle bundle是通过键值对的方式来存取值的~~

也可以通过接口回调等方法,这里就不一一在细说了~

在这里插入图片描述
这里直接调用即可

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44819566/article/details/106015893