本节学习Fragment, Fragment是Android3.0引入的新的API。引入的初衷是为了适合大屏幕的平板电脑。Fragment代表了Activity的子模块,因此可以把Fragment理解为Activity的片段。本节学习如何创建Fragment。
1:先创建一个布局文件,用于显示,左边是按钮用来切换Fragment,而右边就是fragment要显示的内容
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:id="@+id/bt_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragement1"
android:onClick="red"
/>
<Button
android:id="@+id/bt_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragement2"
android:onClick="green"
/>
<Button
android:id="@+id/bt_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragement3"
android:onClick="blue"
/>
</LinearLayout>
<FrameLayout
android:id="@+id/fl"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
>
</FrameLayout>
</LinearLayout>
2:创建一个Fragment子类,继承Fragment类。
Fragment01:
public class Fragement01 extends Fragment {
//返回的view对象会作为fragement1的内容显示在界面上
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragement1, null);
return v;
}
}
Fragment02:
public class Fragement02 extends Fragment {
//返回的view对象会作为fragement2的内容显示在界面上
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragement2, null);
return v;
}
}
Fragment03:
public class Fragement03 extends Fragment {
//返回的view对象会作为fragement3的内容显示在界面上
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragement3, null);
return v;
}
}
因为每个Fragment必须要对应一个布局文件,所以需要3个Fragment的布局文件
Fragment01的布局文件:
<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="#FF0000"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是Fragement1"
android:textSize="25sp"
/>
</LinearLayout>
Fragment02的布局文件:
<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="#00FF00"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是Fragement2"
android:textSize="25sp"
/>
</LinearLayout>
Fragment03的布局文件:
<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="#0000FF"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是Fragement3"
android:textSize="25sp"
/>
</LinearLayout>
剩下就是Activity的代码了:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void red(View v)
{
//把fragement01的界面显示在布局文件中
//1: 先拿到fragement
Fragement01 fragement01 = new Fragement01();
//2:获取fragement管理器
FragmentManager fManager = getFragmentManager();
//3:打开事物
FragmentTransaction ft = fManager.beginTransaction();
//4:把内容显示到界面
ft.replace(R.id.fl, fragement01);
//5:提交
ft.commit();
}
public void green(View v)
{
//把fragement02的界面显示在布局文件中
//1: 先拿到fragement
Fragement02 fragement02 = new Fragement02();
//2:获取fragement管理器
FragmentManager fManager = getFragmentManager();
//3:打开事物
FragmentTransaction ft = fManager.beginTransaction();
//4:把内容显示到界面
ft.replace(R.id.fl, fragement02);
//5:提交
ft.commit();
}
public void blue(View v)
{
//把fragement03的界面显示在布局文件中
//1: 先拿到fragement
Fragement03 fragement03 = new Fragement03();
//2:获取fragement管理器
FragmentManager fManager = getFragmentManager();
//3:打开事物
FragmentTransaction ft = fManager.beginTransaction();
//4:把内容显示到界面
ft.replace(R.id.fl, fragement03);
//5:提交
ft.commit();
}
}
运行看效果:
其实Fragment就是这几个步骤,记住就可以了