Fragment(碎片)的靜態建立

Fragment(碎片)的靜態建立android

 

什麼是碎片?
    簡單來講上圖的左半邊 就是一個碎片 右半邊也是一個碎片 -- 基礎階段先這樣理解
 
什麼是靜態建立碎片?
   就是在一個主Activity.xml文件佈局里布局好fragment(碎片) -- 能夠當作大容器的一個小布局
 
  注意:碎片類都要繼承Fragment
  
   接下來實現上圖界面佈局 -- 碎片的靜態建立
  
   一、在res/layout佈局文件裏有3個佈局
       1 -- 一個activity_main.xml -- 用來放左邊和右邊的碎片
    2 -- 一個left_fragment.xml -- ListView -- 把數據綁到該ListView上
    而後在把該ListView 放到左邊的碎片上
    3 -- 一個right_fragment.xml -- TextView -- 把TextView放到右邊碎片上
activity_main.xml佈局文件
代碼
<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"
    android:orientation="horizontal" >
<!-- name裏 爲 包名.類名 -->
<!--左邊的碎片-->
    <fragment
        android:id="@+id/left_fragment"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:name="com.example.fragment_static.Left_fragment"/>
  <!--右邊的碎片--> 
     <fragment
        android:id="@+id/right_fragment"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="wrap_content"
        android:name="com.example.fragment_static.Right_fragment" />
</LinearLayout>ide

------------------佈局

left_fragment.xml佈局文件
代碼xml

<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"
    android:orientation="vertical">繼承

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />生命週期

</LinearLayout>
------------------
right_fragment佈局文件get

代碼it

<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"
    android:orientation="vertical" >io

    <TextView
        android:id="@+id/right_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="右邊fragment" />class

</LinearLayout>

==================================

二、Left_fragment(左邊碎片) 類名

代碼

public class Left_fragment extends Fragment {

 private ArrayAdapter<String> adapter;
 private ListView listview;
 
 @Override//fragment被添加到宿主Activity時被回調 -- 緊回調一次
 public void onAttach(Activity activity) {
  super.onAttach(activity);
 }
 @Override//建立fragment時回調 -- 緊回調一次
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  //初始化 須要的數據
  String[] names = new String[20];
  for(int i = 0;i<20;i++){
   names[i] = "lala" + i;
  }
  
  adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, names);
 }
 //必須重寫該方法
 @Override//每次建立 、繪製fragment時 都會調用該 方法 -- 調用屢次
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
   Bundle savedInstanceState) {
   
  View view = inflater.inflate(R.layout.left_fragment,container, false);
  listview = (ListView) view.findViewById(R.id.listview);
  listview.setAdapter(adapter);
  //返回一個ListView 佈局視圖到有該類 -- 包名.類名  的Fragment(碎片) 佈局上
  return view;
 }
}
------------------

三、Right_fragment(碎片) 類

代碼

public class Right_fragment extends Fragment {
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
   Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.right_fragment, container, false);
  //返回一個TextView到 右邊的碎片上
  return view;
 }

-----------------

四、MainActivity 類

代碼

public class MainActivity extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }
}

==============================================
  
  

 

Fragment生命週期:
(一)、Fragment基本狀態:
一、活動狀態:Resumed 當前Fragment位於前臺,用戶可見,能夠得到焦點;
二、暫停狀態: Paused 另外一個Activity處於前臺並擁有焦點, 可是該Fragment所在的Activity仍然可見(前臺Activity局部透明或者沒有覆 蓋整個屏幕),不過不能得到焦點;

三、中止狀態:Stopped

要麼是宿主Activity已經被中止, 要麼是Fragment從Activity被移除但被添加到回退棧中; 中止狀態的Fragment仍然活着(全部狀態和成員信息被系統保持着)。 然而, 它對用戶再也不可見, 而且若是Activity被銷燬,它也會被銷燬;

四、銷燬狀態:Destroyed 只能等待被回收。

(二)、Fragment生命週期:【重點】


一、onAttach(): 當該Fragment被添加到Activity時被回調。該方法只會被調用一次;

二、onCreate(): 當建立Fragment時被回調。該方法只會被調用一次;

三、onCreateView():每次建立、繪製該Fragment的View組件時回調該方法,Fragment將會顯示該方法返回的View 組件;

四、onActivityCreated(): 當Fragment的宿主Activity被啓動完成後回調該方法;

五、onStart(): 啓動Fragment時被回調;

六、onResume(): onStart()方法後必定會回調onResume()方法;

七、onPause(): 暫停Fragment時被回調;

八、onStop(): 中止Fragment時被回調;

九、onDestroyView(): 銷燬該Fragment所包含的View組件時調用;

十、onDestroy(): 銷燬Fragment時被回調。該方法只會被調用一次;

十一、onDetach(): 將Fragment從Activity中刪除、替換完成時調用該方法。onDestroy()方法後必定會回調onDetach()方法。 該方法只會被調用一次。

十二、onInflate():

1三、onViewCreated():

【備註:】其中大多數程序必須實現Fragment的三個回調方法分別爲:
onCreate :系統建立Fragments 時調用,可作執行初始化工做或者當程序被暫停或中止時用來恢復狀態,跟Activity 中的onCreate至關。 onCreateView :用於首次繪製用戶界面的回調方法,必須返回要建立的Fragment 視圖UI。假如你不但願提供Fragment用戶界面則能夠 返回NULL。

onPause : 當用戶離開這個Fragment的時候調用,這時你要提交任何應該持久的變化,由於用戶可能不會回來。

相關文章
相關標籤/搜索