静态加载Fragment
1.是Activity的一部分 是一个房子的一个房间 房间的布局可以在多个房子中出现
2.自己的输入事件,自己的生命周期。受宿主影响。
1.创建Fragement 继承 Fragment 重写onCreatView方法 此方法返回一个view(这是一个非常普通的的layout转换成的view) 也可以返回null
View v = inflater.inflate(R.layout.fragment3, null) ;
2.layout文件处理 name的属性是包名.类名 对应到类上去 这是一个在activity中最先要加载的界面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#FFFF00" >
<fragment
<span style="white-space:pre"> </span>android:id="@+id/fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.example.test.fragment1"></fragment>
</LinearLayout>
3.过程是这样的 首先是一个activity加载一个界面 这个界面中 指定了一个 fragment 这个fragment是指向一个继承了Fragment的类 类中加载了一个layout 于是乎 这个activity就是最后一个layout中的内容。当然,因为在第一个中加载过了 所以 在activity中都可以直接使用 第二个fragment中的内容 fragment的大小随意定。
动态加载
将fragment添加到某个layout中 使用add() ,remove(),replace() 最后提交 commit()(如果允许回调 则在commit()前加入addToBackStack(null))
1.处理fragment事务的类 (在activity中处理)
MyFragment myFragment = new MyFragment(); //先生成对象
FragmentManager fragmentManager = getFragmentManager();//获得管理者
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();//开启事务
beginTransaction.add(arg0, arg1)//arg0s是所加载布局的位置的ID ,第二个是类的名字
beginTransaction.commit();
Fragment的生命周期 (基本和Activity差不多)
Fragment与Acticity通信
Fragment调用getActiivty找到宿主
在Acticity中 建立一个
fragment.setArgumnets(Bundle);
之后动态加载Fragment 在Fragemnt中 text = ( String)getArguments().get("name");
回传数据得用接口
public MyListener listerner;
public interface MyListener
{
public void thank(String code);
}
在onAttach(Activity activity){
listener = (MyLsitener)actiivty;
super.onAttach();
}
在 onCreateView中直接调用接口的方法
lisener.thank(code)就回传数据了
在Activty中实现接口