Android在3.0引入Fragment概念,主要目的是用来增加大屏幕设备在UI设计时的灵活性。每一个Fragment之间相互独立,也可相互通信,也可以与activity交互。下面是Fragment的一些特点:
(1)Fragment可以作为Activity的一部分出现。
(2)可以在一个activity出现多个Fragment,一个Fragment也可以在多个activity使用。
(3)在activity运行过程中可以添加,删除,或替换Fragment。
(4)Fragment可以响应自己的输入事件,并且有自己的生命周期,它们的生命周期会受自己宿主的影响。
使用Fragment时,首先创建一个Fragment的子类。它的子类中有一些方法,例如onCreateView()方法:当Fragement第一次启动绘制UI界面时,系统会首先调用它。为了绘制UI,它会返回一个View,如果不显示UI,则返回null。
Fragment有两种加载方式,一种是静态加载方式,一种是动态加载方式。
静态加载:在activity的layout中声明Fragment。标记Fragment的方法也有两种,一种是通过android:id,一种是通过android:tag。
实现方法:
1.在activity_main布局文件中,添加Fragment组件。
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.example.android.bluetoothchat.Fragement"/>
2.编写Fragment的布局文件。
3.编写Fragment的java文件,让其继承类Fragment。
public class MyFragement extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container,false);
return view;
}
}
其中inflater.inflate()中的三个参数分别代表:Fragment需要加载的布局文件,加载父layout的viewGroup,是否返回父ViewGroup.
动态加载:撰写代码将Fragment添加到一个layout中来。主要是通过方法add():添加一个Fragement,指定要添加的Fragment和插入的View),与此类似的还有remove(),替换();这里需要引入一个新的概念:事务。事务是指对Fragment添加,删除等行为,都可以看做事务。FragmenManager是事务的管理者。下面是通过代码来获取事务。
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
下面是通过beginTransaction来操作事务:
MyFragement fragement = new MyFragement();
beginTransaction.add(R.layout.fragment,fragement);
beginTransaction.commit();
当事务添加完成以后要提交commit();