首页 > 其他 > 详细

自学fragment笔记

时间:2019-10-29 21:38:23      阅读:77      评论:0      收藏:0      [点我收藏+]

fragment(碎片)是一种嵌入在activity中的UI片段,它可以用来描述activity中的一部分布局,fragment可以把屏幕布局分成好几块片段,进行模块化的管理,从而使程序更加合理和充分地利用屏幕的空间。一个activity中可以包含多个fragment,一个fragment也可以在多个activity中使用,如果在activity中有多个相同的业务模块,则可以复用fragment。

Fragment的生命周期跟Activity的生命周期十分相似 ,也有启动状态、运行状态、暂停状态、停止状态和销毁状态,但fragment比activity多了以下几个方法,具体如下:onAttach():fragment和activity建立关联时调用;onCreateView():fragment创建视图(加载布局)时调用;onActivityCreate():fragment相关联的activity已经创建完成时调用;onDestroyView():fragment关联的视图被移除时调用;onDetach():fragment和activity解除关联时调用。

创建Fragment与Activity类似,必须创建一个类继承自Fragment。创建NewListFragment类的实例代码如下:

public class NewListPragment extends Fragment{

     @Override

public View onCreateView(LayoutInflater inflater,ViewGroup container,

          bundle savedInstanceState){

     View v = inflater.inflate(R.layout.fragment,container,false);

     return v;

      }

}

上述代码重写了fragment的onCreateView()方法,并在该方法中通过layoutInflater的inflate()方法将布局文件fragment.xml动态加载到Fragment中。

Android系统中提供两个Fragment类,这两个类分别是android.app.Fragment和android.support.v4.app.Fragment。如果NewsListFragment类继承的是

前者,则程序只能兼容3.0版本以上的Android系统,如果NewsListFragment类继承的是后者,则程序可以兼容1.6版本以上的Android系统。

Fragment创建完成后并不能单独使用,需要将Fragment添加到Activity中。有两种方法,如下:

1、在布局文件中添加Fragment

这种方法需要使用<fragment></fragment>标签该标签指定android:name属性,其属性值为Fragment的全路径名称。在LinearLayout布局中添加NewsListFragment的实例代码如下:

<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"

     tools:context=".MainActivity">

<fragment

      android:name="cn.itcast.NewsListFragment"

      android:id="@+id/newslist"

      android:layout_width="match_parent"

      android:layout_height="match_parent"/>
</Linearlayout>

2、在Activity中动态加载Fragment

具体步骤如下:

(1)创建一个Fragment的实例对象

(2)获取FragmentManager(Fragment管理器)的实例

(3)开启FragmentTransactiion(事务)

(4)向Activity的布局容器(一般为FrameLayout)中添加Fragment

(5)通过commit()方法提交事务

实例代码如下:

public class MAinActivity extends Activity{

       @SuppressLint(“NewApi”)

       @Override 

       protected void onCreate(Bundle savedInstanceSrate){

              super.onCrete(savedInstanceState);

              setContentView(R.layout.activity_main); 

              NewsListFragment fragment = new NewsListFragment();//实例化Fragment对象

              FragmentManager fm = getFragmentManager();//获取FragmentManager实例

              //获取FragmentTransaction实例

              FragmentTransaction beginTransaction = fm.beginTransact();

              beginTransaction.replace(R.id.11,fragment);//添加一个Fragment

              beginTransac.commit();提交事务

       }

}

自学fragment笔记

原文:https://www.cnblogs.com/wsyd/p/11761570.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!