首页
学习
活动
专区
圈层
工具
发布

Android入门教程 | Fragment 基础概念

通常,至少应实现以下生命周期方法: onCreate() 系统会在创建片段时调用此方法。当片段经历暂停或停止状态继而恢复后,如果希望保留此片段的基本组件,则应在实现中将其初始化。...onPause() 系统会将此方法作为用户离开片段的第一个信号(但并不总是意味着此片段会被销毁)进行调用。通常,应在此方法内确认在当前用户会话结束后仍然有效的任何更改(因为用户可能不会返回)。...可以通过两种方式为片段提供 ID: 为 android:id 属性提供唯一 ID。 为 android:tag 属性提供唯一字符串。...正确的切换方式是 add(),切换时 hide(),add()另一个 Fragment;再次切换时,只需 hide()当前,show()另一个。...在该回调中我们可以将 context 转化为 Activity 保存下来,从而避免后期频繁调用getAtivity() 获取 Activity 的局面,避免了在某些情况下 getAtivity() 为空的异常

4.5K40

Android技能树 — Fragment总体小结

当Fragment被detach后,执行attach操作,会让Fragment从onCreateView开始执行,一直执行到onResume。 attach无法像add一样单独使用,单独使用会抛异常。...所以如果你觉得Fragment存在太多,影响性能,可以用replace来切换各个界面,就可以保证当前只有一个Fragment,但是因为每次切换后,Fragment都会重建,所以如果这个界面有网络请求相关的...你可以理解为Button设置了View.GONE和View.VISIBLE。...但是有时候获取为空,所以一般我们使用的是: Class xxxFragment extends Fragment { private Context mContext; //...所以我们比如一些对象可以保持在fragment中,这时候Activity重新恢复后,其他对象可以从fragment中找回。

67110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android技能树 — Fragment总体小结

    我们知道Fragment是一个"碎片(或者片段)",添加在Activity中。如果我现在问你,Activity要显示一个按钮Button,你会怎么做? 1....当Fragment被detach后,执行attach操作,会让Fragment从onCreateView开始执行,一直执行到onResume。 attach无法像add一样单独使用,单独使用会抛异常。...所以如果你觉得Fragment存在太多,影响性能,可以用replace来切换各个界面,就可以保证当前只有一个Fragment,但是因为每次切换后,Fragment都会重建,所以如果这个界面有网络请求相关的...但是有时候获取为空,所以一般我们使用的是: Class xxxFragment extends Fragment { private Context mContext; //...所以我们比如一些对象可以保持在fragment中,这时候Activity重新恢复后,其他对象可以从fragment中找回。

    1.2K20

    Android开发笔记(六十七)嵌入页面的碎片

    Fragment 概念 Android从3.0之后引入了Fragment,可以把它理解为页面的一个片段,比如一个html网页就包含一个header头部片段,以及一个body身体片段。...设计Fragment的目的是让页面布局更加灵活,不但可以随意组装和拼接各个片段,还可以只更新某个片段实现页面局部更新的功能(这个类似网页的ajax技术)。...2、代码中需要判断当前界面是横屏还是竖屏,然后补充相应的处理逻辑,例如竖屏时切换页面要增加“fragmentTrs.addToBackStack(null);”,这是模拟按下返回键时回到上个页面。...3、竖屏的页面切换后,因为根节点是FrameLayout,所以上一页面只是界面被覆盖了,可是点击事件这些都还在。...因此为了避免触摸当前页面导致触发上一页面的点击事件,需要在页面切换时禁用上一页面的相关控件,当然返回到上一页面时就得开启相关控件。

    1.6K60

    vue之router文档

    // 出于演示的目的,这里使用一个空的组件,直接使用 HTML 作为应用的模板 var App = {} // 创建一个路由器实例 // 创建实例时可以传入配置参数进行定制,为保持简单,这里使用默认配置...当路径匹配一个含有动态片段的路由规则时,动态片段的信息可以从 $route.params 中获得。...当是字符串时,该路径必须为一个普通路径(也就是说没有动态片段或者全匹配片段)。路径若不是以 / 开头的绝对路径,会以相对于当前路径的方式进行解析。...参数 path: String 此路径为一个普通路径(也就是说没有动态片段或者全匹配片段)。路径不能以 / 开头,会以相对于当前路径的方式进行解析。...调用是异步的,后一个函数会等待前一个函数完成后才会被调用。 参数 hook {Function} 此钩子函数一个类型为切换对象的参数。

    5.8K30

    Android开发:ViewPage最详细教程

    定义 ViewPager是android扩展包v4包中的类 android.support.v4.view.ViewPager 作用 左右切换当前的view,实现滑动切换的效果。...(position), 0);//添加页卡 return mListViews.get(position); } @Override public int...(可选,用了之后要重写它的回调方法处理页面切换时候的事务) FragmentPagerAdapter: vp.addOnPageChangeListener(this);//设置页面切换时的监听器(可选...以及 FragmentStatePagerAdapter 的基类,可将上面的FragmentPagerAdapter 替换成FragmentStatePagerAdapter 异 FragmentPagerAdapter...使用时,每一个生成的 Fragment 都将保存在内存之中,而 FragmentStatePagerAdapter 只保留了当前显示的Fragment,其他划过的Fragment离开视线后,就会被销毁;

    3.3K41

    基础渲染系列(十二)——半透明阴影

    它以完全空的模式开始。每个连续的图案填充一个附加像素,直到填充了七个像素。然后反转,直到所有像素都被填充。 ?...它通常是float4,但Direct3D 9除外,后者需要将其设置为float2。 ? 我们在片段程序中是否需要位置? 顶点程序需要输出其变换后的位置,但是我们不必在片段程序中访问它。...因为有16个图案,所以第一个图案的Z坐标为0,第二个图案的坐标为0.0625,第三个为0.128,依此类推。让我们从始终选择第二种模式开始。 ? 当应丢弃片段时,抖动纹理的Alpha通道为零。...(带有cutout阴影的 Fade模式) 3.1 半透明 可切换化 要再次启用半透明阴影,我们必须为其添加一个选项到我们的自定义着色器UI中。...3.2 为阴影显示 Alpha Cutoff 使用Cutoff阴影时,我们可能想更改Alpha抠像阈值。当前,它仅在使用Cutout渲染模式时显示在我们的UI中。

    3.9K40

    ViewPager中Fragment状态保存的哪些事

    内部是一个 RecyclerView,其数据源来自 activity级 的ViewModel(即我们对数据根据key做了缓存,避免每次的重新初始化) 我们做一个滚动测试,然后再看看 Fragment 重新创建后...但当我们重新切换到 1 时,可以发现,Fragment1 中 RecyclerView 的 滚动位置 没有变化,所以可以证明 Fragment 的状态的确是被还原了。 那这是怎么做的呢?...在初始化 Fragment 时,其会通过 下标position 从 mSavedState 找到缓存的 Fragment 状态,然后将设置给其,便于后续的使用。...return fragment; } 小结 所以我们可以简单理解为 FragmentStatePagerAdapter 之所以可以做到状态还原,是因为其在销毁 Fragment 时,默认缓存了当前 Fragment...作为适配器,Fragment 的状态会被主动还原,主要原因是: Fragment 销毁时,会调用 destoryItem 方法,adapter内部会主动保存了当前的 Fragment 状态,并以当前下标作为

    1.7K20

    答应我,用了这个jupyter插件,别再重复造轮子了

    图2 点击打开后,初始状态下因为我们没有添加可用的「代码片段」,所以显示为空,当我们点击右上角的+后,会来到新增「代码片段」的编辑页面: ?...「Language」下拉选择框则用于指定当前所定义代码片段对应的编程语言,根据自己的定义进行选择: ?...图4 而紧随其后的「Tags」是可选(支持多个标签)的,你可以根据自己的分类依据创建新的标签,或是从以前定义过的标签中选择若干标签: ?...图5 最后则是最重要的「代码片段」输入框,以matplotlib保存Figure对象为图片文件的「代码片段」为例: ?...图6 合法地写好所有输入内容后点击右下角的按钮即可保存当前的「代码片段」,随即在左侧的对应区域内就能看到已经保存好的「代码片段」,鼠标悬浮还可以进行预览: ?

    41050

    答应我,用了这个jupyter插件,别再重复造轮子了

    「代码片段」,所以显示为空,当我们点击右上角的+后,会来到新增「代码片段」的编辑页面: 图3 「Name」输入框用于输入当前定义的「代码片段」的名称,你可以按照自己的理解来命名(注意这里只能由小写的字母...而「Description」输入框用于输入对当前所定义代码片段的描述语句,在「Name」合法输入的基础上新增了空格内容。...「Language」下拉选择框则用于指定当前所定义代码片段对应的编程语言,根据自己的定义进行选择: 图4 而紧随其后的「Tags」是可选(支持多个标签)的,你可以根据自己的分类依据创建新的标签,或是从以前定义过的标签中选择若干标签...: 图5 最后则是最重要的「代码片段」输入框,以matplotlib保存Figure对象为图片文件的「代码片段」为例: 图6 合法地写好所有输入内容后点击右下角的按钮即可保存当前的「代码片段」,随即在左侧的对应区域内就能看到已经保存好的...「代码片段」,鼠标悬浮还可以进行预览: 图7 直接将对应的「代码片段」拖到notebook中指定位置即可插入代码: 图8 而除了在侧边栏点击+新增代码片段,还可以在单元格中选中代码后右键添加: 图

    37220

    精通MVC3摘译(2)-生成URL

    ActionLink方法生成HTML基于当前的路由模式。...每一个路由都会被检查是否匹配,是否满足下面的3个条件: 1.URL模式中定义的片段变量的值都存在,路由系统首先会从匿名对象的属性值中查找值,然后再是当前请求的变量值,最后是路由中定义的默认值。...传递额外的值 你可以传递使用匿名类型为片段变量传值,其中匿名变量中的属性表示片段。...当我们在描述路由匹配生成URL的方法时,我们提到,在尝试查找每个路由URL模式中的片段时,路由系统会从当前的请求中查找值,这个行为让很多程序困惑。...我们强烈建议你要依赖这种行为,为每个URL模式中的每个片段变量赋值。依靠上述行为可能让你的代码难以读懂。

    1K10

    答应我,用了这个jupyter插件,别再重复造轮子了

    图2   点击打开后,初始状态下因为我们没有添加可用的代码片段,所以显示为空,当我们点击右上角的+后,会来到新增代码片段的编辑页面: ?...Language下拉选择框则用于指定当前所定义代码片段对应的编程语言,根据自己的定义进行选择: ?...图4   而紧随其后的Tags是可选(支持多个标签)的,你可以根据自己的分类依据创建新的标签,或是从以前定义过的标签中选择若干标签: ?...图5   最后则是最重要的代码片段输入框,以matplotlib保存Figure对象为图片文件的代码片段为例: ?...图6   合法地写好所有输入内容后点击右下角的按钮即可保存当前的代码片段,随即在左侧的对应区域内就能看到已经保存好的代码片段,鼠标悬浮还可以进行预览: ?

    78820

    原 Intellij idea2017编辑

    你可以选择部分文字或者矩形代码片段,使用多选择或者粘性选择模式扩展和收缩选择。...(列模式是矩阵) 粘性选择 切换到此模式,可以通过Ctrl+Shift+A的方式,键入sticky,选择下图的事件即可。...从粘贴板粘贴最后一个内容为纯文本 主菜单 Edit | Paste Simple....这个窗体就是镜头模式。 ,窗体内展示错误、警告的代码片段。 ? 默认情况下,这种行为是开启的。你可以按下图方式切换它。 ? 多光标 基础 idea支持多插入符号操作。...切换事件 切换大小写 选择要切换的代码片段 从主菜单选择Edit | Toggle Case, 或者按键 Ctrl+Shift+U. 高亮括号 效果如图 ? 如果括号没有匹配到,则是显示如下图: ?

    3.2K60

    在 Visual Studio Code 中添加自定义的代码片段

    ▲ 打开用户代码片段设置 点开后,会让你选择做什么: 新建全局代码片段 新建适用于当前工作区的代码片段 新建特定于语言的全局代码片段 根据你的需要选择一个范围: 比如你需要在任何文件中都能够使用的代码片段...在新建全局代码片段和当前工作区的代码片段的时候,是需要自己指定名称的。...scope 字段中填写以逗号分隔的作用域 Id,如果 scope 字段为空或根本没有设置,那么将适用于所有语言。...body 你可以使用 1 2 来作为按下 Tab 时将切换的键盘焦点区域,0 是插入完成后最终光标所在的位置。...就是那个 date 字段为空或根本没有设置,那么将适用于所有语言。 是的 代码片段中可以插入时间 和其他各种变量。

    3.2K31

    详解 Apache SkyWalking 的跨进程传播协议

    父追踪片段ID(Parent trace segment Id),是 BASE64 编码的字符串,其内容是字符串且全局唯一。...父跨度ID(Parent span Id),是一个从 0 开始的整数,这个跨度ID指向父追踪片段(segment)中的父跨度(span)。...有两个服务,分别叫onemore-a和 onemore-b,用户通过HTTP调用onemore-a的/onemore-a/get,然后onemore-a的/onemore-a/get又通过HTTP调用onemore-b...的/onemore-b/get,流程图就是这样的: 那么,我们在onemore-b的/onemore-b/get的Header中就可以发现一个叫做sw8的key,其值为: 1-YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDk...扩展Header值 当前值包括的字段: 追踪模式(Tracing Mode),空、0或1,默认为空或0。表示在这个上下文中生成的所有跨度(span)应该跳过分析。

    1.1K30
    领券