Fragment用法

来源:互联网 发布:oracle11 抓取 sql 编辑:程序博客网 时间:2024/06/05 11:11

静态加载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中实现接口






0 0
原创粉丝点击