文档章节

Fragment整理

西米小娅
 西米小娅
发布于 09/26 17:56
字数 636
阅读 2
收藏 0

1、Fragment父类

    Fragment的父类有两个,分别为android.app.Fragment和android.support.v4.app.Fragment。建议使用android.support.v4.app.Fragment。因为此Fragment在所有的android版本中可以保持一致。

    在builid.gradle中添加了appcompat-v7库,v4也一起被添加了。所以不用重复添加

    注意:在使用<fragment>标签在布局中添加fragment的时候,一定要设置id属性,否则会出现问题

2、动态添加Fragment

    注意:fragment所要占据的位置,不可以使用<fragment>标签。否则无法达到想要的效果

    a、创建待添加的fragment实例

    b、获取FragmentManager,可以调用Activity对象的getSupportFragmentManager()

    c、开启一个事务,通过调用fragmentManager对象的beginTransaction()开启

    d、向容器中添加或者替换fragment,调用replace()

    e、提交事务。调用commit()

    具体的代码:

    /**
     * 
     * @param flag 是否将fragment添加到BackStack中
     *              以实现类似于Activity返回键,可以返回上一个Activity的效果
     * @param fragment 新fragment
     */
    public void replaceFragment(boolean flag,Fragment fragment){
        FragmentManager fragmentManager = this.getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.fragment_simple,fragment);
        if(flag) {
            fragmentTransaction.addToBackStack(null);
        }
        fragmentTransaction.commit();
    }

3、实现返回栈的效果

    对于效果的说明:

        类似于Activity,点击返回键,可以返回到上一个Activity

    具体的实现方法:

        在动态添加fragment后,调用fragmentTransaction.addToBackStack(null)即可

4、Fragment与Activity之间通信

    a、在Activity中,使用FragmentManager对象的fragmentManager.findFragmentById()方法即可

    b、在Fragment中,调用getActivity()获得Activity对象

    c、Fragment之间,可以调用getActivity()获得Activity对象,然后在通过Activity对象使用FragmentManager对象的fragmentManager.findFragmentById()

5、Fragment状态

    a、运行状态:Fragment与Activity都处于运行状态

    b、暂停状态:Activity处于暂停状态,或者是另一个未占满屏幕的Activity位于栈顶,Fragment也处于暂停状态

    c、停止状态:Activity处于停止状态,Fragment也处于停止状态。或者是Fragment被显示调用replace或remove方法,从Activity中移除,并调用了addToBackStack(null)。处于停止状态的Fragment对用户不可见,可能会被销毁。

    d、销毁状态:Activity被销毁,与之关联的Fragment也会被销毁。或者Fragment被显示调用replace或者remove方法,并没有调用addToBackStack(null)

6、Fragment的生命周期

    参考地址:https://developer.android.com/guide/components/fragments?hl=zh-cn

    

7、Fragment的数据保存和恢复

    保存数据:调用onSaveInstanceState()方法

    恢复数据:调用onCreate()、onCreateView()和onActivityCreated()方法

© 著作权归作者所有

共有 人打赏支持
西米小娅

西米小娅

粉丝 4
博文 68
码字总数 31836
作品 0
南京
Android ViewPager 取消预加载

Android 新引入的Fragment加入了Viewpager这样的一个组件。至于该控件的功能在这里就不说了。这篇文章主要解决fragment viewpager预加载的问题。 默认的viewpager是会预先加载下一个fragmen...

geeksu
2014/03/19
0
3
TabLayout+ViewPager+Fragment实现页面切换(菜单底部或顶部)

父布局 使用 使用Tab自带的设置文字图片 适配器 fragment使用 关于切换事件的监听 其他小细节 1.talayout去掉下标 app:tabIndicatorHeight="0dp" 2.关于加载fragment时重复加载的问题,设置v...

东西南瓜西葫芦
2016/07/16
80
0
Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版

描述: 之前有做过一个记账本APP,拿来练手的,做的很简单,是用Eclipse开发的; 最近想把这个APP重新完善一下,添加了一些新的功能,并选用Android Studio来开发; APP已经完善了一部分,现...

AnneHan
09/25
0
0
Fragment对比Activity - Android碎片介绍

Fragment是Android honeycomb 3.0新增的概念,Fragment名为碎片不过却和Activity十分相似,下面Android123介绍下Android Fragment的作用和用法。Fragment用来描述一些行为或一部分用户界面在...

鉴客
2011/12/12
4.2K
0
Android Fragment —Tab 导航栏的实现

微信、QQ、微博底部等都有 Tab 标签选项,点击不同的标签可以切换的不同的界面。 步骤 1)描述主界面布局 activity_main.xml 代码如下: 说明:代码可能看着有点长,先看下布局之后的 outlin...

iBazinga
2016/11/25
68
0

没有更多内容

加载失败,请刷新页面

加载更多

jenkins+docker+nodejs项目的自动部署环境

1、服务器安装docker yum install docker 2、jenkins安装 //创建jenkins工作目录mkdir -p /var/www/jenkins///拉取docker jenkins镜像docker pull jenkins //设置目前权限(必须...

西园里的猫
6分钟前
0
0
 索引和锁底层原理 !

索引和锁底层原理 ! 一、索引 在之前,我对索引有以下的认知: 索引可以加快数据库的检索速度; 表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、删除、修改...

DemonsI
15分钟前
0
0
转载:Java实现的SFTP

JSch - Java实现的SFTP(文件上传详解篇):https://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html JSch - Java实现的SFTP(文件下载详解篇):https://www.cnblogs.com/longyg/......

WJtiny
18分钟前
0
0
聊聊storm的AssignmentDistributionService

序 本文主要研究一下storm的AssignmentDistributionService AssignmentDistributionService storm-2.0.0/storm-server/src/main/java/org/apache/storm/nimbus/AssignmentDistributionServic......

go4it
19分钟前
0
0
完全跨域的单点登录(SSO)解决方案源码解析

本文介绍的是一种PHP的开源SSO解决方案,可完全跨域,实现较简洁,源码地址:https://github.com/legalthings/sso 实现原理 一共分为3个角色: Client - 用户的浏览器 Broker - 用户访问的网...

庞陆阳
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部