浅谈如何静态创建Fragment

来源:互联网 发布:牛耳软件教育 编辑:程序博客网 时间:2024/04/30 03:02

在安卓3.0版本之后,安卓推出了fragment,可以这样理解,fragment是一种轻量级的Activity。
静态创建Activity,静态创建Fragment实际上是大同小异的。
我们先比较一下:
Activity:首先创建一个xml文件,然后创建与之对应的java文件,通过设置让两者关联,最后在主清单中进行注册。
Fragment:首先我们同样需要注册一个xml文件,然后创建与之对应的java文件,通过onViewCreate()的返回方法进行关联,最后我们需要在Activity中进行配置相关参数。
首先是XML文件,如下,只做了设置背景色

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:background="#ff0000"    android:layout_height="match_parent"    android:orientation="vertical" ></LinearLayout>

接下来是java文件,我们需要复写onViewCreate()方法,代码如下

package com.example.fragment;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment1 extends Fragment {    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        return inflater.inflate(R.layout.fragment1, null);    }}

这样二者就关联了,接下来我们在Activity中创建fragment的位置

    <fragment           android:id="@+id/fragment1"         android:layout_width="0dip"        android:layout_height="wrap_content"        android:layout_weight="1"        android:name="com.example.fragment.Fragment1"        />

这样我们就实现了静态的创建一个fragment的方法
总结,同样是同Activity一样的操作,fragment的要比Activity少一级

接下来是动态创建fragment,我们需要的就是将上面的第三步不要做,将这个步骤放在代码里面执行
1、我们首先应该得到一个FragmentManager
2、通过获得Fragment之后我们可以通过得到一个事件beginTransaction()
3、通过replace方法实现界面的动态变化
Deom代码如下:

FragmentManager  fm=getFragmentManager();        FragmentTransaction fts=fm.beginTransaction();        Fragment1 fragment1=new Fragment1();        Fragment2 fragment2=new Fragment2();        int width=getWindowManager().getDefaultDisplay().getWidth();        int height=getWindowManager().getDefaultDisplay().getHeight();        if(width>height)        {            fts.replace(android.R.id.content, fragment1);        }        else        {            fts.replace(android.R.id.content, fragment2);        }        fts.commit();

由于是事件,所以千万要记得提交。
总结,动态创建的方式就是,得到一个管理器,然后得到一个事件,然后通过事件里面的方法进行设置。

0 0