1.碎片( Fragment):一种可以嵌入在活动当中的UI片段,能让程序更加合理和充分地利用大屏幕的空间,在平板上的应用广泛。
2.碎片同样包括布局,有自己的生命周期,甚至可理解成一个迷你型的活动。
3.碎片真正的强大之处在于,可以在程序运行时动态地添加到活动中。
在活动中动态添加碎片(核心代码):
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
AnotherRightFragment fragment = new AnotherRightFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.right_layout, fragment);
transaction.commit();
break;
default:
break;
}
}
(1)创建待添加的碎片实例。
(2)获取到FragmentManager,活动中直接调用getFragmentManager()方法得到。
(3)开启一个事物,通过调用beginTransaction()方法开启。
(4)向容器中加入碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例。
(5)提交事务,调用commit() 方法来完成。
4.模拟类似返回栈效果,按下back键回到上一个碎片。FragmentTransaction中提供了addToBackStack() 方法,用于将一个事务添加到
返回栈中。调用该方法,可以接收一个名字用于描述返回栈的状态,一般传入null即可。
5.FragmentManager提供了类似于findViewById()的方法,专门用于从布局文件中获取碎片实例。
RightFragment rightFragment = (RightFragment) getFragmentManager().findFragmentById(R.id.right_fragment);
在每个碎片中通过调用getActivity()方法得到和当前碎片相关联的活动实例。
MainActivity activity = (MainActivity) getActivity();
碎片与碎片之间通信:在一个碎片中得到相关联的活动,通过活动去获取另外一个碎片的实例,则实现了不同碎片之间的通信功能。