如何管理fragment回退栈
3个回答
展开全部
遇到的问题:
通过FragmentTransaction的replace方法会导致,每次都会重新调用fragment的onCreateView()方法,浪费时间。
解决方法:
通过FragmentTransaction的hide和show方法来实现fragment的显示和隐藏,这样就不会重复调用onCreateView函数了。
FragmentTransactioin 可以用来添加,删除fragment,也可以控制fragment的显示和隐藏。
这是如果调用addToBackStack(null),此时的状态就会被保存在回退栈,按返回键的时候就会显示出栈顶的
getSupportFragmentManager().popBackStack() 这个方法可以让栈顶的fragment出栈。
只有在程序运行时被动态添加的fragment才会被添加到后退栈。
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, newFragment,"testa")
.addToBackStack(null)
.commit();
程序跑起来之后,通过这个方法后退栈数才会加一,如果在代码中一口气添加多个,再运行程序,getSupportFragmentManager().getBackStackEntryCount()得到的后退栈数值为零。
通过FragmentTransaction的replace方法会导致,每次都会重新调用fragment的onCreateView()方法,浪费时间。
解决方法:
通过FragmentTransaction的hide和show方法来实现fragment的显示和隐藏,这样就不会重复调用onCreateView函数了。
FragmentTransactioin 可以用来添加,删除fragment,也可以控制fragment的显示和隐藏。
这是如果调用addToBackStack(null),此时的状态就会被保存在回退栈,按返回键的时候就会显示出栈顶的
getSupportFragmentManager().popBackStack() 这个方法可以让栈顶的fragment出栈。
只有在程序运行时被动态添加的fragment才会被添加到后退栈。
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, newFragment,"testa")
.addToBackStack(null)
.commit();
程序跑起来之后,通过这个方法后退栈数才会加一,如果在代码中一口气添加多个,再运行程序,getSupportFragmentManager().getBackStackEntryCount()得到的后退栈数值为零。
中智咨询
2024-08-28 广告
2024-08-28 广告
在当今竞争激烈的商业环境中,企业需要不断提高自身的竞争力,以保持市场份额和增加利润。通过人效提升,企业可以更有效地利用有限的资源,提高生产力和效益,从而实现盈利目标。中智咨询提供全方位的组织人效评价与诊断、人效提升方案等数据和管理咨询服务。...
点击进入详情页
本回答由中智咨询提供
2015-02-08 · 知道合伙人数码行家
关注
展开全部
TabActivity+Fragment 或者ActivityGroup+Fragment
TabActivity或ActivityGroup的每一个子Activity可是都应该有一个独立的后退栈的哦
然后每一个子Activity可以在管理一系列的Fragment
比如楼主你说的ABC三个碎片就可以放到第一个子Activity的后退栈保存
而XYZ可以放到第二个子Activity
TabActivity或ActivityGroup的每一个子Activity可是都应该有一个独立的后退栈的哦
然后每一个子Activity可以在管理一系列的Fragment
比如楼主你说的ABC三个碎片就可以放到第一个子Activity的后退栈保存
而XYZ可以放到第二个子Activity
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TabActivity或ActivityGroup的每一个子Activity可是都应该有一个独立的后退栈的哦,然后每一个子Activity可以在管理一系列的Fragment。比如楼主说的ABC三个碎片就可以放到第一个子Activity的后退栈保存。遇到了同样的问题,也可以在中间部分的Fragment中把最后的Fragment结束掉。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询