您的位置:首页 > 移动开发 > Android开发

Fragment系列之----基础知识(一)

2016-11-07 17:43 369 查看
一  基础知识

        (1)概念:
                        ①   你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了
                        ②  统一管理一部分布局
                        ③  版本兼容性:3.0时代

         (2)
方法参数的额理解
                  ①  onAttach(Activity):当Fragment与Activity发生关联时调用。
                  ② onCreateView(LayoutInflater, ViewGroup,Bundle):创建该Fragment的视图
                  ③ onActivityCreated(Bundle):当Activity的onCreate方法返回时调用
                  ④onDestoryView():与onCreateView想对应,当该Fragment的视图被移除时调用
                  ⑤ onDetach():与onAttach相对应,当Fragment与Activity关联被取消时调用

 
  注意:① 除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现
   
             ②   add 
   
             ③ hide和show执行。不会执行任何的生命周期的函数
   
             ④ remove移除,editText有可以能会给加id的保存,但是不一定会有
   
              在ViewGroup肚子里面加东西,会出现在多个界面

        

   二   基础方法
     (一)静态 fragment
          (1)概念:把Fragment当成普通的控件,直接写在Activity的布局文件中
            (2)创建步骤:(要嵌套3个界面在Activity)

                    ① 第一:创建3个布局文件

                    ② 第二:创建3个Fragment  ,继承Fragment,重写onCreateView决定Fragemnt的布局
               
注意: onCreateView返回的就是显示在界面的视图
 
  
 
              ③ 第三: 在Activity布局文件中,加入如下的标签                   

<fragment
android:id="@+id/des01"     // 代表id
android:name="com.example.myapplication.Fragment01"    //   是不同的fragment返回视图类的名称,在layout中实例化的Fragment类
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_alignParentTop="true"
/>


                ④  第四:  MainActivity中应用Activity的布局文件就可以啦

          (二) 动态fragment
                (1) 概念:  动态的添加,删除,替换fragment页面

             (2) 步骤:
                    ① 创建3个布局文件

 
                       ② 第二:创建3个Fragment  ,继承Fragment,重写onCreateView决定Fragemnt的布局
 
          
 
                  ③ Activity的布局文件中添加一个ViewGroup, (动态的添加。不要再里面静态的去写,不然每个界面都会有这个视图)

 
                       ④ 初始化 Fragment 实例
                    

private Fragment01 mFragment01 = new Fragment01();
private Fragment02 mFragment02 = new Fragment02();
private Fragment03 mFragment03 = new Fragment03();

⑤ 通过管理器的方式把Fragment加载ViewGroup


                         FragmentManager fragmentManager
= this.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.des, mFragment01, "1");
fragmentTransaction.commit();


                (3) 方法参数介绍    
① Fragment家族常用的API

Fragment常用的三个类:

 android.app.Fragment 主要用于定义Fragment

 android.app.FragmentManager 主要用于在Activity中操作Fragment

 android.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明白~

② Fragment实现步骤

a、获取FragmentManage的方式:

getFragmentManager() //  v4中,getSupportFragmentManager

b、主要的操作都是FragmentTransaction的方法

//开启一个事务

FragmentTransaction transaction = fm.benginTransatcion();

   // 往Activity中添加一个Fragment

transaction.add() 

// 从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。

transaction.remove()

// 使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体

transaction.replace()

// 隐藏当前的Fragment,仅仅是设为不可见,并不会销毁

transaction.hide()

// 显示之前隐藏的Fragment

transaction.show()

// 会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。

detach()

// 重建view视图,附加到UI上并显示。

attach()

// 提交一个事务

transatcion.commit()

注:     如果使用Android3.0以下的版本,需要引入v4的包,然后Activity继承FragmentActivity,然后通过getSupportFragmentManager获得FragmentManager。不过还是建议版Menifest文件的uses-sdk的minSdkVersion和targetSdkVersion都改为11以上,这样就不必引入v4包了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息