`
dyllove98
  • 浏览: 1408980 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:39173
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:80241
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:133369
社区版块
存档分类
最新评论

fragment生命周期处理(添加项目到Action Bar)

阅读更多

添加项目到Action Bar
       你的fragment可以通过实现 onCreateOptionMenu() 提供菜单项给activity的选项菜单(以此类推, Action Bar也一样).为了使这个方法接收调用,无论如何, 你必须在 onCreate() 期间调用 setHasOptionsMenu() 来指出fragment愿意添加item到选项菜单(否则, fragment将接收不到对 onCreateOptionsMenu()的调用).

       随后从fragment添加到Option菜单的任何项,都会被追加到现有菜单项的后面.当一个菜单项被选择, fragment也会接收到 对 onOptionsItemSelected() 的回调.也可以在你的fragment layout中通过调用 registerForContextMenu() 注册一个view来提供一个环境菜单.当用户打开环境菜单, fragment接收到一个对 onCreateContextMenu() 的调用.当用户选择一个项目, fragment接收到一个对onContextItemSelected() 的调用.

       注意: 尽管你的fragment会接收到它所添加的每一个菜单项被选择后的回调,  但实际上当用户选择一个菜单项时, activity会首先接收到对应的回调.如果activity的on-item-selected回调函数实现并没有处理被选中的项目, 然后事件才会被传递到fragment的回调.

       这个规则适用于选项菜单和环境菜单.

处理Fragment生命周期

        管理fragment的生命周期, 大多数地方和管理activity生命周期很像.和activity一样, fragment可以处于3种状态:
        Resumed
        在运行中的activity中fragment可见.
        Paused

       另一个activity处于前台并拥有焦点, 但是这个fragment所在的activity仍然可见(前台activity局部透明或者没有覆盖整个屏幕).

       Stopped

       要么是宿主activity已经被停止, 要么是fragment从activity被移除但被添加到后台堆栈中.

       停止状态的fragment仍然活着(所有状态和成员信息被系统保持着). 然而, 它对用户不再可见, 并且如果activity被干掉,他也会被干掉.

       仍然和activity一样, 你可以使用Bundle保持fragment的状态, 万一activity的进程被干掉,并且当activity被重新创建的时候, 你需要恢复fragment的状态时就可以用到. 你可以在fragment的 onSaveInstanceState() 期间保存状态, 并可以在 onCreate(), onCreateView() 或 onActivityCreated() 期间恢复它.

      生命周期方面activity和fragment之间最重要的区别是各自如何在它的后台堆栈中储存. 默认地, activity在停止后, 它会被放到一个由系统管理的用于保存activity的后台堆栈.(因此用户可以使用BACK按键导航回退到它).

      然而, 仅当你在一个事务期间移除fragment时,显式调用addToBackStack()请求保存实例时,才被放到一个由宿主activity管理的后台堆栈.

      另外, 管理fragment的生命周期和管理activity生命周期非常类似.因此, "managing the activity lifecycle"中的相同实践也同样适用于fragment. 你需要理解的是,  activity的生命如何影响fragment的生命.

与activity生命周期的协调工作
       fragment所生存的activity的生命周期,直接影响fragment的生命周期,每一个activity的生命周期的回调行为都会引起每一个fragment中类似的回调.

       例如,当activity接收到onPause()时,activity中的每一个fragment都会接收到onPause().

       Fragment 有一些额外的生命周期回调方法, 那些是处理与activity的唯一的交互,为了执行例如创建和销毁fragment的UI的动作. 这些额外的回调方法是:


  • onAttach()
    当fragment被绑定到activity时被调用(Activity会被传入.).
  • onCreateView()
    创建和fragment关联的view hierarchy时调用.
  • onActivityCreated()
    当activity的onCreate()方法返回时被调用.
  • onDestroyView()
    当和fragment关联的view hierarchy正在被移除时调用.
  • onDetach()
    当fragment从activity解除关联时被调用.


       fragment生命周期的流程, 以及宿主activity对它的影响, 在图3中显示.在这个图中,可以看到activity依次的每个状态是如何决定fragment可能接收到的回调方法.例如, 当activity接收到它的onCreate(), activity中的fragment接收到最多是onActivityCreated().

       一旦activity到达了resumed状态, 你可以自由地在activity添加和移除fragment.因此,仅当activity处于resumed状态时, fragment的生命周期才可以独立变化.

      无论如何, 当activity离开resumed状态,fragment再次被activity的推入它自己的生命周期过程. 

分享到:
评论

相关推荐

    浅谈Android App开发中Fragment的创建与生命周期

    这使得Fragment能够自定义其在Action Bar中的表现,增强交互性。 Fragment的引入是Android平台为了应对不同屏幕尺寸和设备类型而作出的重要改进。通过Fragment,开发者可以编写适应多种屏幕配置的代码,使得应用在...

    安卓FragmentTab选项卡相关-Fragment实现tab切换不坑自用.zip

    7. **更新UI**:当用户切换Tab时,Fragment生命周期中的`onResume()`方法会被调用,这是更新Fragment内UI的好时机。 注意,描述中提到"太多无法一一验证是否可用",这意味着压缩包中的代码可能并未完全测试过,可能...

    actionBar+viewpager+adpter+fragment

    Fragment有自己的生命周期,并且可以在Activity中动态添加、移除或替换,这使得在不同屏幕尺寸和配置下创建适应性强的布局成为可能。 在“actionBar01”这个项目中,开发者可能已经创建了一个包含Action Bar的主...

    fragment底部导航栏

    Fragment是Android中的一个可添加到Activity中的模块化组件,它可以有自己的布局和生命周期。通过在Activity中动态地添加、替换或移除Fragments,我们可以创建更加灵活的用户界面。在底部导航栏中,通常会有3到5个...

    fragment的几个小demo

    通过这些示例,你可以学习到Fragment的生命周期管理、与Activity的交互、在ViewPager中的使用以及如何优化内存性能。这些都是Android开发中的关键技能,对于构建用户友好的、功能丰富的应用程序至关重要。

    fragment.zip

    要添加一个Fragment,你需要创建一个新的Fragment类,继承自`androidx.fragment.app.Fragment`,并实现其生命周期方法。例如: ```java public class MyFragment extends Fragment { @Override public View ...

    ActionBarSherlock结合ViewPager及Fragment实现仿新闻客户端顶部滑动切换效果

    `Fragment`是Android应用开发中的一个重要组件,它代表了应用界面的一部分,可以独立于Activity进行生命周期管理。`Fragment`可以动态添加到Activity中,或者在多个Activity之间重用,这使得应用的设计更加灵活,...

    Fragment&Tab选项卡

    - 当在Fragment中使用Tab选项卡时,确保处理好Activity和Fragment的生命周期,避免内存泄漏和异常。 - Tab选项卡的切换应该伴随着Fragment的保存和恢复状态,以便用户在切换回来时看到他们离开时的状态。 - 使用`...

    Fragment Handle MenuItem

    在Android应用开发中,`Fragment`是用于构建可重用屏幕部分的重要组件,而`MenuItem`则是在Android的`OptionsMenu`或`Action Bar`中显示的用户操作选项。`Fragment Handle MenuItem`涉及到如何在`Fragment`中处理...

    ActionBarSherlock与Fragment及ViewPager结合实现滑动界面效果

    `Fragment`是Android中的一个组件,它可以被视为Activity的一部分,有自己的生命周期和UI。`Fragment`允许开发者将应用程序拆分成更小、更可管理的部分,这对于构建复杂的、多面板的应用尤其有用。在一个Activity中...

    ApiDemos ActionBarCompat-Basic

    这些菜单项在运行时会被添加到Action Bar,通常通过重写`onCreateOptionsMenu`和`onOptionsItemSelected`方法来处理菜单的创建和点击事件。 4. **菜单图标**:Action Bar中的图标通常放在`res/drawable`目录下,...

    NavigationView+ToolBar+TabLayout+ViewPager+Fragment综合使用

    通过`FragmentManager`管理`Fragment`的生命周期和事务,可以实现内容的动态加载和更新。 综合使用这些组件,开发者可以创建一个具有导航侧滑菜单、自定义顶部栏、可切换的标签页以及每个标签页各自承载不同内容的...

    Android应用源码之JakeWharton-ActionBarSherlock-4.4.0-0-g4a79d53.zip

    ActionBarSherlock通过重写onCreateOptionsMenu和onOptionsItemSelected等生命周期方法,使开发者能够轻松创建和处理Action Bar菜单项。同时,它还支持Overflow Menu,即在屏幕空间有限时,将部分操作移至一个下拉...

    Android高级应用源码-模仿什么值得买的demo fragment很强大.zip

    学习这个源码示例,开发者可以深入理解Fragment的生命周期、如何在活动中添加和移除Fragment、如何处理Fragment的事务,以及如何在Fragment间传递数据。这对于开发适应多种屏幕尺寸和配置的Android应用来说至关重要...

    ActionBarSherlock

    1. **生命周期**:Fragment有自己的生命周期,与Activity生命周期紧密关联。这使得Fragment可以单独处理创建、暂停、恢复和销毁事件。 2. **Transaction管理**:通过FragmentManager进行Fragment的添加、移除、替换...

    安卓2.1-4.4版本通用的Tab导航例子

    2. 考虑使用`FragmentPagerAdapter`或`FragmentStatePagerAdapter`来管理Fragment,它们能处理Fragment的生命周期和内存管理。 3. 为了良好的用户体验,确保Tab标签清晰易读,避免过多的Tab数量。 总结: 在Android...

    android七种tab demo

    在学习这些demo时,你需要理解Android的Activity和Fragment生命周期,以及如何在它们之间进行数据传递。同时,掌握Adapter的概念和用法,如PagerAdapter和FragmentPagerAdapter,是实现Tab切换的关键。此外,对...

    android_demo.rar

    "android_demo"可能还涵盖了其他Android开发概念,如布局设计(如LinearLayout、RelativeLayout或ConstraintLayout)、数据绑定、事件监听、异步任务处理(如AsyncTask)以及Android的生命周期管理。此外,可能还...

    仿qq聊天界面

    `Fragment`是Android中的可重用组件,可以在Activity的不同生命周期内管理自己的状态。`ViewPager`则允许用户左右滑动来切换不同页面,配合`FragmentPagerAdapter`或`FragmentStatePagerAdapter`,可以轻松地将多个...

    浮动搜索框(SearchManager)毕业设计—(包含完整源码可运行).zip

    通过研究这些源码,学生不仅可以学习到如何使用SearchManager实现浮动搜索框,还能了解到Android Intent、Activity生命周期、UI组件的使用等基础知识,对于提升Android开发技能非常有帮助。 总结,这个毕业设计项目...

Global site tag (gtag.js) - Google Analytics