android学习笔记之Fragment(一)


14人收藏此文章, 我要收藏发表于8个月前(2013-01-01 17:04) , 已有1928次阅读 ,共2个评论

Fragment(Android3.0 API Level 11引入,之前的怎么办? 没关系可以使用Android support library 注意:使用这个库你的Activity需要继承FragmentActivity):

Fragments可以使你能够将activity分离成多个可重用的组件,每个都有它自己的生命周期和UI。

Fragments的主要优点:你可以轻松得创建动态灵活的UI设计,可以适应于不同的屏幕尺寸。从手机到平板电脑。

每个Fragment都是一个独立的模块,紧紧地与activity绑定在一起。可以运行中动态地移除、加入、交换等。

Fragments提供一个新的方式让你在不同的安卓设备上统一你的UI。

 

创建新的Fragments:

大多数情况你是需要给Fragment设计UI的,但是也有可能你创建一个Fragment不包含任何UI,用来给Activity提供一些后台的帮助。

那么如果我需要UI呢,代码中如何创建或者加载?

DEMO: 代码中

public class MySkeletonFragment extends Fragment { 
   @Override 
   public View onCreateView(LayoutInflater inflater, 
                                 ViewGroup container, 
                                 Bundle savedInstanceState) { 
     // 创建或者解析加载一个视图,然后返回作为Fragment的UI

     // 如果这个Fragment没有UI,那么返回NULL

     return inflater.inflate(R.layout.my_fragment, container, false); 
   } 

在前提的前提还是先讨论下Fragment的生命周期:

首先明白的一点就是,Fragment是Activity的一部分,所以Activity的生命周期也是会影响到它的。

Fragment的生命周期像极了Activity:

image

 

另外一张来自Google官网的截图:

那么我们根据这图从上往下:

1.onAttach() 当Fragment附加到父窗口Activity上时。(成为Activity的一部分)

@Override 
public void onAttach(Activity activity) { 
   super.onAttach(activity); 
   // 这个方法你可以获取到父Activity的引用。

}

2.onCreate 这个方法一般做一些Fragment的初始化操作

@Override 
public void onCreate(Bundle savedInstanceState) { 
   super.onCreate(savedInstanceState); 
   // 初始化Fragment


3.onCreateView 一旦Fragment已经创建,为了去给Fragment创建它自己的UI,这个方法就是意义所在。

@Override 
public View onCreateView(LayoutInflater inflater, 
                               ViewGroup container, 
                               Bundle savedInstanceState) {

     // 创建或者解析加载一个视图,然后返回作为Fragment的UI

     // 如果这个Fragment没有UI,那么返回NULL

     return inflater.inflate(R.layout.my_fragment, container, false); 


4.onActivityCreated 当父Activity和当前的Fragment的UI都完整创建完的时候被调用

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
   super.onActivityCreated(savedInstanceState);

   // 完成Fragment的初始化,不对前面不是已经初始化好了么?

   //这个方法主要是初始化那些你需要你的父Activity或者Fragment的UI已经被完整初始化才能初始化的元素。

  //具体你看图中的位置你能看出点端倪来。比如UI的元素没被解析反射进来,你还想用? 想得美,等它初始化完,你再用。 

5.onStart 、onResume 、onPause这些看看就懂不解释了

6.别忘了Fragment也是有onSaveInstance的

    @Override 
    public void onSaveInstanceState(Bundle savedInstanceState) {  
      //这个Bundle会被传入到onCreate、onCreateView 
      super.onSaveInstanceState(savedInstanceState); 
    } 
7.onDestoryView 当你的Fragment的UI被分离的时候

     @Override  
     public void onDestroyView() {  
        //清除所有跟视图相关的资源

        super.onDestroyView(); 
      } 
8.onDestory 生命周期的末尾了。。。

        @Override 
        public void onDestroy(){  
          //清除所有资源包括要结束的线程,关闭数据库连接等等。 
          super.onDestroy(); 
        } 
9.onDetach 当你的Fragment从父activity身上分离的时候

           @Override 
           public void onDetach() { 
             super.onDetach(); 
           }

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