首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android入门教程 | Fragment 基础概念

onPause() 系统会将此方法作为用户离开片段的第一个信号(但并不总是意味着此片段会被销毁)进行调用。通常,应在此方法内确认在当前用户会话结束仍然有效的任何更改(因为用户可能不会返回)。...如果没有在执行删除片段的事务时调用 addToBackStack(),则事务提交时该片段会被销毁,用户将无法回退到该片段。...onDetach() —— 当fragment和activity分离的时候,调用这个方法。...但请注意,只有在该片段附加到 Activity 时才需调用 getContext()。如果尚未附加片段,或者其在生命周期结束期间已分离,则 getContext() 返回 null。...这样就能做到多个 Fragment 切换不重新实例化: 2. Fragment 的的优点 Fragment 可以使你能够将 activity 分离成多个可重用的组件,每个都有它自己的生命周期和UI。

3.5K40

Fragment基本使用

onResume():当Fragment可见且可交互时调用 onPause():当Fragment不可交互但可见时调用。 onStop():当Fragment不可见时调用。...没有添加到回退栈,这个Fragment实例将会被销毁 transaction.replace():使用另一个Fragment替换当前的,实际上是remove()然后add()的合体 transaction.hide...,前一个Fragment实例会被销毁。...这里很明显,我们调用transaction.addToBackStack(null);将当前的事务添加到了回退栈,所以FragmentOne实例不会被销毁,但是视图层次依然会被销毁,即会调用onDestoryView...中操作 方法二在Fragment A中操作了Fragment B,违背模块分离思想,应通过Activity将其分离 在Activity中可以直接通过FragmentManager.findFragmentById

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

Android高频面试专题 - 基础篇(二)Fragment

2、Fragment生命周期 Fragment比Activity多了几个生命周期的回调方法 onAttach(): 当该Fragment被添加到Activity时被回调,该方法只会被调用一次。...onActivityCreated(): 当Fragment所在的Activity被启动完成回调该方法。 onDestroyView(): 销毁该Fragment所包含的View组件时调用。...onDetach(): 将该Fragment从Activity中删除、替换完成时回调该方法,在onDestroy()方法一定会回调onDetach()方法,该方法只会被调用一次。...和 FragmentStatePagerAdapter fragmentPagerAdapter在destroyItem()的时候调用的是detach()方法,只是把UI进行了分离,并没有真正的移除fragment...),这个Fragment实例将会被销毁 transaction.replace() 使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体 transaction.hide

1.4K10

Android Fragment用法知识点的讲解

第三步,调用addToBackStack(true)方法,目的为了允许用户通过按下返回按键返回到前一个Fragment状态,beginTransaction.commit()提交。...FragmentPagerAdapter和FragmentStatePagerAdapter FragmentPagerAdapter适用于页面较少的情况,把UI分离,并没有回收,FragmentStatePagerAdapter...图片来源官方: 生命周期 onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段调用创建; onCreateView(): 创建并返回相关的视图结构; onActivityCreated...(): 表示活动已被创建完成了,这里是activity创建成功; onStart(): 片段对用户可见; onResume(): 片段与用户开始交互; onPause(): 片段与用户不再交互;...onStop(): 片段不再对用户可见; onDestroyView(): 销毁与其View相关资源; onDestroy(): 销毁一切片段; onDetach(): 片段与其活动不再相关联

99360

Android Fragment的用法实例详解

第三步,调用addToBackStack(true)方法,目的为了允许用户通过按下返回按键返回到前一个Fragment状态,beginTransaction.commit()提交。...FragmentPagerAdapter和FragmentStatePagerAdapter FragmentPagerAdapter适用于页面较少的情况,把UI分离,并没有回收,FragmentStatePagerAdapter...onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段调用创建; onCreateView(): 创建并返回相关的视图结构; onActivityCreated(...): 表示活动已被创建完成了,这里是activity创建成功; onStart(): 片段对用户可见; onResume(): 片段与用户开始交互; onPause(): 片段与用户不再交互;...onStop(): 片段不再对用户可见; onDestroyView(): 销毁与其View相关资源; onDestroy(): 销毁一切片段; onDetach(): 片段与其活动不再相关联。

1.4K31

再谈Fragment

就是把 Activity 复杂的内容抽离成几个碎片,然后拼凑起来,在 Activity 布局中,只需要引入各个不同的 Fragment 就可以 了。...比如我们常见的布局,底部导航,然后每个模块对应不同的 Fragment。其实也是完全可以不使用 Fragment 的,一个页面中包含各个模块的布局,然后通过点击导航来决定隐藏哪些模块。...和 remove 不同的是,此时 Fragment的状态依然由 FragmentManager 维护 attach() 重建 view 视图,附加到UI上显示 .addToBackStack() 是将事务放入回退栈...显示栈顶的事务(对应的 Fragment) 如果当前栈顶的Fragment 已经执行过 destroyView 了,则会重新执行生命周期(从 createView 开始) 如果任务栈中只有一个Fragment...hidden 的时候会调用而已。

98520

行情艰难,Android初中级面试题助你逆风翻盘,每题都有详细答案

Activity所需数据等; onRestart():表示Activity正在重新启动,一般情况下,当前Acitivty从不可见重新变为可见时,OnRestart就会被调用; onStart():表示Activity...何时会被调用?...:如果新Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,同时会回调onNewIntent方法,如果新Activity实例已经存在但不在栈顶,那么Activity依然会被重新创建...设置Activity的android:configChanges时,切屏会销毁当前Activity,然后重新加载调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次; onPause() →onStop...replace先remove掉相同id的所有fragment然后在add当前的这个fragment,而add是覆盖前一个fragment

77220

精选Android中高级高频面试题:四大组件及Fragment原理

Activity所需数据等; onRestart():表示Activity正在重新启动,一般情况下,当前Acitivty从不可见重新变为可见时,OnRestart就会被调用; onStart():表示Activity...何时会被调用?...栈顶复用模式:如果新Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,同时会回调onNewIntent方法,如果新Activity实例已经存在但不在栈顶,那么Activity依然会被重新创建...参考回答: 设置Activity的android:configChanges时,切屏会销毁当前Activity,然后重新加载调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次; onPause(...replace先remove掉相同id的所有fragment然后在add当前的这个fragment,而add是覆盖前一个fragment

1.7K00

《Android编程权威指南》之UI fragmentfragment管理器

fragment是在API 11级系统版本中引入的,为了支持老设备,一个兼容版的Fragment实现被添加到v4支持库版本中,Android 9.0(API 28)的发布,系统框架版的 fragment...) .commit() } } } fragment 事务被用来添加、移除、附加分离或替换 fragment 队列中的fragment。...添加 fragment 供 FragmentManager 管理时,onAttach(Context?)、onCreate(Bundle?)和onCreateView(...)函数会被调用。...向处于运行状态的 activity 中添加 fragment 时,以下 fragment 生命周期函数会被依次调用:onAttach(Context?)、onCreate(Bundle?)...、onStart()以及onResume(),当 fragment 的快速同步上 activity 最新的生命周期状态的,托管activity的FragmentManager就会边接收操作系统的调用指令

49720

Android从零开始搭建MVVM架构(5)—— LifeCycle详解

lifecycle代码简洁,我们可以通过实现LifecycleObserver 接口,来监听声明周期,然后我们在activity和fragment中去注册监听。...然后就可以调用getLifecycle()方法获取继承了抽象类Lifecycle的LifecycleRegistry,然后调用 addObserver(@NonNull LifecycleObserver...比如,onResume()方法执行,Activity处于RESUME状态,我们可以通过判断这个状态来做一些事情 通过这个简单的小例子,我们看到了我们的类,只要实现了 LifecycleObserver...要注意的是: 生命周期状态为RESUMED时表示,当前activity 是在前台,并且可交互也就onResume()执行 生命周期状态为STARTED时,表示当前activity处于可见但是不可交互...相反,ViewModel应调用相应的组件来获取数据,然后将结果提供给UI控制器。 4.使用dataBinding在视图和UI控制器之间保持干净的界面。

78020

Android开发:5分钟解析Activity&Fragment生命周期

the foreground”:即当前Activity被挡住一部分(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用,比如说解屏、弹窗消失 onPause() 调用场景...此时退出SecondActivity(点击Back键),即MainActivity重新回到当前Activity时(UI最顶层),调用onResume(),即onResume ()是在当前Activity...被挡住一部分(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用 onStop() 调用场景:“the activity is no longer visible”...调用finsh() Activity整个生命周期的完全解读 启动Activity 系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态...onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

1.3K30

Android-Fragment

如果Activity被回收就在 onRestoreInstanceState()方法中获取,然后根据下标确定Fragment的显示隐藏就没有问题。如图: ?...onRestoreInstanceState(Bundle savedInstanceState)只有在activity确实是被系统回收,重新创建activity的情况下才会被调用。...接下来(注:部分版本可能存在差异): Fragment:onStart Activity:onStart Activity:onResume Fragment:onResume 用户点击Back之后 Fragment...replace是一个替换的过程,意思是remove掉当前的fragment重新初始化一个new fragment进行替换,会重复完全执行新的fragment的生命周期,相比show(),hide()比较消耗内存...其他建议 在Fragment建议使用getActivity()获取Activity,而是在onAttach()方法中通过其参数获取。

1.1K30

安卓-碎片的使用入门

第四章-Android开发中的碎片 4.1 碎片是什么 碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用得非常广泛。...创建模拟器的方法我们在第1章已经学过了,创建完成启动平板模拟器,效果如图4.4所示。 ?...(5) 提交事务,调用commit() 方法来完成。  这样就完成了在活动中动态添加碎片的功能,重新运行程序,可以看到和之前相同的界面,然后点击一下按钮,效果如图4.6所示。 ?...);  调用FragmentManager的findFragmentById() 方法,可以在活动中得到相应碎片的实例,然后就能轻松地调用碎片里的方法了。  ...同样地,Fragment 类中也提供了一系列的回调方法,以覆盖碎片生命周期的每个环节。其中,活动中有的回调方法,碎片中几乎都有,不过碎片还提供了一些附加的回调方法,那我们就重点看一下这几个回调。

1.3K20
领券