片段怎么在Android中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
片段可认为是一个轻量级的活动,但不同与活动,它是要嵌到活动中来使用的,它用来解决设备屏幕大小的不同,主要是充分利用界面上的空间,如平板上多余的空间,一个活动可以插入多个片段,可以认为片段就是活动上的一个视图。
, FragmentA fragment =, new FragmentA (); .beginTransaction, getSupportFragmentManager () () 阀门才能(R.id.XXX,片段,,“fragment")//,,.addToBackStack(“;”),//加入回退栈 .commit才能;
或者
FragmentManager manager =, getSupportFragmentManager (),, FragmentTransaction transaction =, manager.beginTransaction (),, transaction.add (R.id.fragment_container,片段,,“fragment"),, transaction.commit ();
但是第二种方法要注意,导包须一致
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager;
而除了使用添加方法,我们也可以使用替代方法添加片段
FragmentA fragment =, new FragmentA (); .beginTransaction getSupportFragmentManager () () ,.replace (R.id.XXX,片段,“fragment") ,.commit ();
<强>添加和替换的区别是:强>
①添加是往集装箱容器里堆加片段观点;替换是将集装箱容器里之前添加的观点全部清除,然后再添加当前片段观点
一定要记住,取代清除的是集装箱的视图,而不是片段实例,删除移除的才是片段实例
②添加后期可以使用,隐藏操作,但是取代不可以,原因见①
③使用添加、回滚时,片段不会重新加载,曾经的操作痕迹还存在,使用替换回滚时,之前的片段会重新加载,原因见①
使用添加的时候还有一点需要注意的是,视图重叠的问题,记得设置背景色
添加和替换千万不要混合使用,否则会出错
在进行删除隐藏,显示之前要记得判断<代码> fragment.isAdded();下> 代码面的代码我就不提示了
移除片段实例
, Fragment Fragment =, getSupportFragmentManager () .findFragmentByTag (“fragment"); .beginTransaction, getSupportFragmentManager () () .remove才能(片段) .commit才能();
隐藏片段
, Fragment Fragment =, getSupportFragmentManager () .findFragmentByTag (“fragment"); .beginTransaction, getSupportFragmentManager () () hide才能(片段) .commit才能();
显示片段
, Fragment Fragment =, getSupportFragmentManager () .findFragmentByTag (“fragment"); .beginTransaction, getSupportFragmentManager () () ,,,告诉(片段) .commit才能();
拓展:
在碎片里刷新(即从头加载片段数据,且不影响后续的回退栈)
Fragment replaceFragment =, getActivity () .getSupportFragmentManager () .findFragmentByTag (“first_fragment"); ,,,getActivity () .getSupportFragmentManager () .beginTransaction () ,,,.detach (replaceFragment) ,,,.attach (replaceFragment) ,,,.commit ();
简单的讲,分离是销毁视图,而不是片段实例,附加是重建视图视图中,附加后的视图会位于视图最前面,具体的可以自己去查看资料
<强>二、回滚操作强>
最常用:依次回滚
, @Override ,public void  onBackPressed (), { .getBackStackEntryCount, if (getSupportFragmentManager () (), & lt;=, 1),{,//这里是取出我们返回栈存在片段的个数 完成才能(); {}大敌;else //取出我们返回栈保存的片段,这里会从栈顶开始弹栈 .popBackStack getSupportFragmentManager才能()(); ,} 以前,}>拓展:指定回滚
void popBackStack(名称、String int 旗帜);片段怎么在Android中使用