开发者社区> 技术小胖子> 正文

Android——Fragment介绍

简介:
+关注继续查看

 Fragment是Android honeycomb 3.0新增的概念,Fragment名为碎片不过却和Activity十分相似,下面介绍下Android Fragment的作用和用法。Fragment用来描述一些行为或一部分用户界面在一个Activity中,你可以合并多个fragment在一个单独的activity中建立多个UI面板,同时重用fragment在多个activity中.你可以认为fragment作为一个activity中的一节模块 ,fragment有自己的生命周期,接收自己的输入事件,你可以添加或移除从运行中的activity.

       一个fragment必须总是嵌入在一个activity中,同时fragment的生命周期受activity而影响,举个例子吧,当activity 暂停,那么所有在这个activity的fragments将被destroy释放。然而当一个activity在运行比如resume时,你可以单独的操控每个fragment,比如添加或删除。

       Fragment作为Android 3.0的新特性,有些功能还是比较强大的,比如 合并两个Activity,如图

 

如上图所示,用Activity A 表示文章标题列表,ActivityB表示文章具体内容。我们可以看到两个Activity通过两个Fragment合并到一个Activity的布局方式,对于平板等大屏幕设备来说有着不错的展示面板。不过因为Fragment和Activity的生命周期都比较复杂,下图表示的fragments的生命周期:

 

Activity、Fragment分别对比下:

两个的生命周期很类似,也息息相关。

 

 

创建一个fragment你必须创建一个Fragment的子类或存在的子类,比如类似下面的代码

public static class AndroidFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) { 
               return inflater.inflate(R.layout.android_fragment, container, false);
    }
}

 

onCreate()
当fragment创建时被调用,你应该初始化一些实用的组件,比如在fragment暂停或停止时需要恢复的

onCreateView()
当系统调用fragment在首次绘制用户界面时,如果画一个UI在你的fragment你必须返回一个View当然了你可以返回null代表这个fragment没有UI.

那么如何添加一个Fragment到Activity中呢? Activity的布局可以这样写

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment 
android:name="com.android.cwj.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    <fragment 
android:name="com.android.cwj.ArticleReaderFragment"
            android:id="@+id/viewer"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</LinearLayout>

最后提醒大家Fragment存在于Activity的ViewGroup中,按照继承关系大家就可以了解他的结构。

 

 

参考:

docs/guide/topics/fundamentals/fragments.html

http://dasheng.iteye.com/blog/986809

http://zwkufo.blog.163.com/blog/static/258825120112207254076/

 



     本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/817257,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Android】Fragment跳转Activity时携带数据
在网上你可以看到很多Fragment都是用接口回调来携带数据跳转到Activity。 我觉得好麻烦,于是你们可以用我下面的方法 而我们可以直接使用下面这个方法:
24 0
Android 底部导航栏(四、ViewPager+RadioGroup+Fragment)简单易懂
底部导航栏在Android应用中随处可见,今天使用ViewPager+RadioGroup+Fragment这三个控件来实现此功能。前面写了有三种实现方式,有兴趣可以去看看
22 0
Android 底部导航栏(三、ViewPager+TabLayout+Fragment)简单易懂
底部导航栏在Android应用中随处可见,今天使用ViewPager+TabLayout+Fragment这三个控件来实现此功能。 前面使用了另外两个方法来实现导航栏,不过我还是更喜欢Viewpager,代码也少,毕竟前两个不能左右滑动。
30 0
Android 底部导航栏(二、自定义View+Fragment)
上一片文章用的是BottomNavigationView+Menu+Fragment,但是可能有时候需求不一样,menu的样式不太够,所以需要自定义View来实现。
12 0
Android Navigation获取栈顶Fragment
由于项目底层是Unity,在上层切换Activity时,下面的unity界面会暂停,界面不能刷新,会有很多问题,于是我们就想到了Activity App,那么就想到了使用JetPack的Navigation来统一管理Fragment之间的跳转。
33 0
android 通用是框架,对导航栏和fragment的封装
android 通用是框架,对导航栏和fragment的封装
87 0
Android实现面包屑效果,支持Fragment联动
Android实现面包屑效果,支持Fragment联动
69 0
Android Fragment懒加载新思路
在Android x以前,我们实现懒加载通常是通过 setUserVisibleHint 方法来控制Fragment是否可见。在Android x之后,Google 提供了新的方案给我们。今天我们就来学习一下。
90 0
android Fragment 的简单应用
碎片(Fragment)是一种可以嵌入在活动中的UI片段,可以理解成一个迷你活动。
87 0
+关注
技术小胖子
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
蚂蚁聚宝Android秒级编译——Freeline
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像