浅谈如何静态创建Fragment

在安卓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();

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章