android複習路之fragment篇

1.fragment的生命週期必須依附於activity:


                              

2.fragment依附於activity的的生命週期圖:


3.fragment各個函數的用法:

3.1 on attach:與窗口關聯後就可以調用,可以通過Fragment.getActivity方法獲取窗口,但fragment沒有初始化不能進行操作。

3.2 oncreate:可以從bundle中獲得數據,不要進行耗時操作,不然無法加載窗口。

3.3 oncreateview:用來在fragment中裝載view視圖。

3.4 onviewcreated:創建完窗口後activity立刻回掉該方法。

3.5 onactivitycreated:activity執行完on create方法之後,系統立馬調用該方法。表示窗口已經初始化完成,從這一個時候開始,就可以在Fragment中使用getActivity().findViewById(Id);來操控Activity中的view了。

3.6 onstart:fragment已經顯示在ui 但是不可以進行交互

3.7 onresume:fragment可以進行交互了

3.8 onpause:活躍到非活躍的第一個函數,進行數據保存。

3.9 ondestroyview:oncreateview創建的視圖全部被移除

3.10 ondestroy:activity還可以獲得fragment的對象但是無法操作。

3.11ondetached:死亡

4.Fragment中的主要的操作函數:

        FragmentTransactiontransaction = fm.benginTransatcion();//開啓一個事務

	transaction.add()
        //往Activity中添加一個Fragment
        transaction.remove()
        //從Activity中移除一個Fragment,如果被移除的Fragment沒有添加到回退棧(回退棧後面會詳細說),這個Fragment實例將會被銷燬。

        transaction.replace()
        //使用另一個Fragment替換當前的,實際上就是remove()然後add()的合體~

        transaction.hide()
        //隱藏當前的Fragment,僅僅是設爲不可見,並不會銷燬

        transaction.show()
        //顯示之前隱藏的Fragment

        detach()
        //當fragment被加入到回退棧的時候,該方法與*remove()*的作用是相同的,
        //反之,該方法只是將fragment從視圖中移除,
        //之後仍然可以通過*attach()*方法重新使用fragment,
        //而調用了*remove()*方法之後,
        //不僅將Fragment從視圖中移除,fragment還將不再可用。

        attach()
        //重建view視圖,附加到UI上並顯示。
        transatcion.commit()
	//提交一個事務

5.例子:創建一個fragment並且在activity中加載

fragment代碼:

public class aFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragmentlayout, container, false);
    }
}
fragment的xml:

<?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:id="@+id/afragment"
    android:orientation="vertical"
    >

    <TextView
        android:text="TextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:background="#ff00ff"
        />
</LinearLayout>
main代碼:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        aFragment fragment1=new  aFragment();
        getFragmentManager().beginTransaction().replace(R.id.content,fragment1).commit();
        getFragmentManager().beginTransaction().show(fragment1);

    }
}
main的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.zobject.fragement.MainActivity">
<FrameLayout
    android:id="@+id/content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="13dp"
    android:layout_marginStart="13dp"
    android:layout_marginTop="175dp"
    android:background="#fff000"
    >
</RelativeLayout>
效果圖:


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