在安卓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();
由于是事件,所以千万要记得提交。
总结,动态创建的方式就是,得到一个管理器,然后得到一个事件,然后通过事件里面的方法进行设置。