Fragment基础----创建

时间:2024-05-23 17:32:56

1,Fragment的目的及应用场景

fragment 是3.0后引入的类,其字面翻译为“碎片”。

目的是将activity划分成许多单元再进行组合,可以根据不同分辨率屏幕,在不同状态下,灵活创建优化UI并提高复用性。

Fragment基础----创建

2,Fragment的创建

第一种方式:通过xml标签创建

  step 1:创建fragment类继承fragment关系类,其中导包的时候app包为3.0以后使用,v4包可以向下兼容

  step 2:在activity的xml文件中添加fragment标签并添加name属性为fragment全路径

   <fragment
android:id="@+id/fragment_center"
android:name="singleorb.com.fragment.FragmentCenter"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="5" /> <fragment
android:id="@+id/fragment_bottom"
android:name="singleorb.com.fragment.FragmentBottom"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" />

  

  step 3:创建fragment类的布局文件,

<?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="#00ff11"> </LinearLayout>

  

<?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="#ff0000"> </LinearLayout>

  

  step 4:并在onCreateView中添加

public class FragmentBottom extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_xml_bottom, container, false);
return view;
}
}

  

public class FragmentCenter extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_xml_center, container, false);
return view;
}
}

  step 5:启动即可看到结果,把activity分成两部分

Fragment基础----创建

第二种方式:通过Java代码方式创建

  1,只需把第一种方法的fragment标签换成FramLayout去掉name属性

  <FrameLayout
android:id="@+id/fragment_code_center"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="5" /> <FrameLayout
android:id="@+id/fragment_code_bottom"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" />

  

  2, 然后再在activity中添加相应引入代码即可

/*
*java 代码动态添加fragment 需要两个操作对象
* FragmentManager
*FragmentTransaction
*/
//获取FragmentManager实例
FragmentManager fragmentManager = getFragmentManager();
//开启事务
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
//添加布局文件
fragmentTransaction.add(R.id.fragment_code_center, new FragmentCenter());
fragmentTransaction.add(R.id.fragment_code_bottom, new FragmentBottom());
//提交
fragmentTransaction.commit();

  

得到的结果和用xml创建的一样,但是用Java代码来创建可以更灵活的使用所以推荐应用Java代码方式创建