Fragment基础----创建

1,Fragment的目的及应用场景

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

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

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分成两部分

第二种方式:通过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代码方式创建

 

posted @ 2016-02-05 14:49  AlexanderZhou  阅读(179)  评论(0编辑  收藏  举报