美文网首页IT界的日子Android知识Android开发
多个Fragment切换管理 ,回退栈

多个Fragment切换管理 ,回退栈

作者: 奋斗的犇犇 | 来源:发表于2017-02-24 18:28 被阅读500次

Android 开发中为了适应Android碎片问题,我们会经常使用到Fragment,管理Fragment不被重复加载的需求屡见不鲜,废话少说先上两个方法

第一次加载Fragment时调用这个方法,即当Fragment为空时。

<pre>
public void addFragment(Fragment fragment,String tag){
transaction =manager.beginTransaction();
if (showfragment==null){
}else {
transaction.hide(showfragment);
}
transaction.add(R.id.fg,fragment);
transaction.commit();
showfragment=null;
showfragment=fragment;
Log.i("当前的fragment", showfragment.toString() + "/" + tag);
}
</pre>

切换Fragment时调用如下方法

<pre>
//切换页面的重载,优化了fragment 的切换
public void switchFragment(Fragment from,Fragment to){
if(from==null||to==null){
return ;
}else {
FragmentTransaction transaction=manager.beginTransaction();
if (!to.isAdded()){
//隐藏当前的fragment,
transaction.hide(from).add(R.id.fg,to).commit();
}else {
transaction.hide(from).show(to).commit();
}
showfragment=to;
}
}
</pre>

举个列子

需求,有4个切换的首页页面,相当于四个Fragment
FragmenTone fragmenOne;
FragmentTwo fragmentTwo;
FragmentThree fragmentThree;
FragmentFour fragmentFour;
当然首先要初始化:
<pre> FragmentManager manager;//Fragment管理者
FragmentTransaction transaction;//Fragment事务管理者
Fragment showfragment;//当前页,即将要隐藏的页面,就是switchFragment()这个方法的第一个参数
</pre>
并且在加载Fragment之前,一般在onCreat方法中获取到FragmentManager :
<pre>manager=getSupportFragmentManager();</pre>
开始加载Fragment了:
<pre>
swich(getId){//按钮id
case R.id.xx1:
if (fragmenOne==null){
fragmenOne=new FragmenTone ();
addFragment(fragmenOne,"one");
}else {
switchFragment(showfragment,fragmenOne);
}
beack;
case R.id.xx2:
if (fragmentTwo==null){
fragmentTwo=new FragmentTwo ();
addFragment(fragmentTwo,"two");
}else {
switchFragment(showfragment,fragmentTwo);
}
beack;
case R.id.xx3:
if (fragmentThree==null){
fragmentThree=new FragmentThree ();
addFragment(fragmentThree,"three");
}else {
switchFragment(showfragment,fragmentThree);
}
beack;
case R.id.xx4:
if (fragmentFour==null){
fragmentFour=new FragmentFour ();
addFragment(fragmentFour,"four");
}else {
switchFragment(showfragment,fragmentFour);
}
beack;
}
</pre>
ok,好了,就这样。可能封装性不怎么好,但是还可以用。

Fragment--》回退栈

先下班赶火车,下次补上。

相关文章

  • 多个Fragment切换管理 ,回退栈

    Android 开发中为了适应Android碎片问题,我们会经常使用到Fragment,管理Fragment不被重...

  • Fragment回退栈和Activity栈不太一样

    Fragment回退栈,加入到Fragment回退栈里面的fragment出栈后,处于栈顶的fragment也不会...

  • Fragment学习

    1、Fragment回退栈管理 Activity是由任务栈管理的,遵循先进后出的原则,Fragment也可以实现类...

  • Fragment回退栈详解

    一、什么是回退栈 Activity切换时是通过栈的形式,不断压栈出栈,在Fragment的时候,如果你不是手动开启...

  • Fragment 回退栈

    一、什么是回退栈 Activity切换时是通过栈的形式,不断压栈出栈.在Fragment的时候,如果你不是手动打开...

  • Fragment 回退栈

    一、什么是回退栈Activity切换时是通过栈的形式,不断压栈出栈,在Fragment的时候,如果你不是手动开启回...

  • Fragment回退栈管理

    那么有可能存在一种情况,退出的Fragment是比较深,然后退出的时候需要把前面的都退出掉,比如A->B->C->...

  • 回退栈

    Fragment 的回退栈创建MvpFragmentManager : 监听使用

  • Fragment的使用注意事项

    Fragment任务栈 Fragment也添加任务栈管理,从而实现多个Fragment先后添加后可以返回上一个Fr...

  • Fragment(11)——回退栈管理

    前言 在Fragment的使用过程中,我们经常会遇到Fragment的启动和关闭的问题,我们当然可以使用add及r...

网友评论

  • AwaitZhang:问一下,这里的break是不是写错了?😅
    AwaitZhang:@虾皮皮 你这是在几个fragment在同一个容器里面,但是如果不在同一个容器里面呢?你又怎么管理回退?可以写一下吗?这个问题困扰我好久了
    奋斗的犇犇: @SimpleNickname 😳

本文标题:多个Fragment切换管理 ,回退栈

本文链接:https://www.haomeiwen.com/subject/ddiwwttx.html