zoukankan      html  css  js  c++  java
  • 每日学习

    今天学习fragment:

    因为团队项目需要fragment:

    Fragment的onCreateView()方法返回Fragment的UI布局,需要注意的是inflate()的第三个参数是false,因为在Fragment内部实现中,会把该布局添加到container中,如果设为true,那么就会重复做两次添加
    • 动态加载Fragment中,FragmentTransaction类提供了方法完成增删等操作,完成后调用FragmentTransaction.commit()方法提交修改

      • transaction.add():往Activity里面添加一个片段
      • transaction.remove():从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈,这个Fragment实例将会被销毁
      • transaction.replace():使用另一个Fragment替换当前的,实际上是remove()然后add()的合体
      • transaction.hide():隐藏当前Fragment,仅不可见,不会销毁
      • transaction.show():显示之前隐藏的Fragment
      • detach():会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护
      • attach():重建view视图,附加到UI上并显示。

      commit方法一定要在Activity.onSaveInstance()之前调用

      commit()操作是异步的,内部通过mManager.enqueueAction()加入处理队列。对应的同步方法为commitNow(),commit()内部会有checkStateLoss()操作,如果开发人员使用不当(比如commit()操作在onSaveInstanceState()之后),可能会抛出异常,而commitAllowingStateLoss()方法则是不会抛出异常版本的commit()方法,但是尽量使用commit(),而不要使用commitAllowingStateLoss()。

    • FragmentManager拥有回退栈(BackStack),类似于Activity的任务栈,如果添加了该语句,就把该事务加入回退栈,当用户点击返回按钮,会回退该事务(回退指的是如果事务是add(frag1),那么回退操作就是remove(frag1));如果没添加该语句,用户点击返回按钮会直接销毁Activity。

    作者:哦心有
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    Centos搭建PHP5.3.8+Nginx1.0.9+Mysql5.5.17
    初识Mongodb总结
    初识Mongodb之[CURD]PHP版
    Centos搭建Samba
    PHP图像处理(二) GraphicsMagick 安装扩展及使用方法
    Vcastr3.0开源在线flv播放器
    自动更新@version svn版本号信息
    Centos安装Memcache
    MVC演化
    JAVA与.NET的相互调用——TCP/IP相互调用基本架构
  • 原文地址:https://www.cnblogs.com/haobox/p/14911100.html
Copyright © 2011-2022 走看看