项目中Fragment show/pop的使用和实现
来源:互联网 发布:jenkins java 配置 编辑:程序博客网 时间:2024/05/07 13:41
总结一下项目中对Fragment show/pop的使用和实现:
很简单,简单的包装套了个命令模式.
<1>在规划整体的layout时,就预先为Fragment留了几个View作为container<平时都是backgroudn为null透明>.
打好地基,以后基本没有更改过.
<2>show/pop Fragment的操作采用了 命令模式, 封装为了一个类,
在需要show/pop Fragment时, 会将要做的操作(add/remove/replace), 被操作的fragment实例引用,
以及backstackName<可以没有>,还有Fragment切换时的transition效果,优先级作为构造参数填入,
并且按照 命令模式 还实现了execute函数来进行真正的操作,通过EventBus将这个command送出去,
目前都是由MainActivity来handle这个command的.
<3>MainActivity在收到Command以后要考虑现在是不是在pause状态<就是被切到了后台不可见状态>,
如果在pause状态,那么将这个Command加入到pendingCommandList中<如果优先,那么加队头>,
在Activity resume的时候会将pending的Command全部执行.
<4>MainActivity的所谓执行Command,其实就是简单的调用了Command自己的execute罢了
<这也是命令模式的特点,处理逻辑全部封装在Command中,执行者不需要知道任何操作细节>.
<5>在execute的时候,会先将之前的pending的FragmentTransaction都执行<FragmentManager.executePendingTransactions()>
完了以后,如果是add, 并且发现还提供了backstackName, 那么就将是该backstackName的
Fragment和其上面的fragment全部都pop出去<确保不会有两个相同backstackName的fragment被add到同一个activity,
popBackStack(backstackName, FragmentManager.POP_BACK_STACK_INCLUSIVE)>,
对于transition,如果是TRANSIT_UNSET,那么使用自己定制的一套.
得到FragmentTransaction以后根据不同操作和不同的container进行相应的add/replace/remove.
如果有backstackName,会addToBackStack(backstackName),commit后为了保证立刻生效,会再次executePendingTransactions().
<6>Remove操作基本不用<后来取消了>,
每次基本都是fragment自己直接FragmentManager.popBackStackImmediate()了,能这么做的前提是
很简单,简单的包装套了个命令模式.
<1>在规划整体的layout时,就预先为Fragment留了几个View作为container<平时都是backgroudn为null透明>.
打好地基,以后基本没有更改过.
<2>show/pop Fragment的操作采用了 命令模式, 封装为了一个类,
在需要show/pop Fragment时, 会将要做的操作(add/remove/replace), 被操作的fragment实例引用,
以及backstackName<可以没有>,还有Fragment切换时的transition效果,优先级作为构造参数填入,
并且按照 命令模式 还实现了execute函数来进行真正的操作,通过EventBus将这个command送出去,
目前都是由MainActivity来handle这个command的.
<3>MainActivity在收到Command以后要考虑现在是不是在pause状态<就是被切到了后台不可见状态>,
如果在pause状态,那么将这个Command加入到pendingCommandList中<如果优先,那么加队头>,
在Activity resume的时候会将pending的Command全部执行.
<4>MainActivity的所谓执行Command,其实就是简单的调用了Command自己的execute罢了
<这也是命令模式的特点,处理逻辑全部封装在Command中,执行者不需要知道任何操作细节>.
<5>在execute的时候,会先将之前的pending的FragmentTransaction都执行<FragmentManager.executePendingTransactions()>
完了以后,如果是add, 并且发现还提供了backstackName, 那么就将是该backstackName的
Fragment和其上面的fragment全部都pop出去<确保不会有两个相同backstackName的fragment被add到同一个activity,
popBackStack(backstackName, FragmentManager.POP_BACK_STACK_INCLUSIVE)>,
对于transition,如果是TRANSIT_UNSET,那么使用自己定制的一套.
得到FragmentTransaction以后根据不同操作和不同的container进行相应的add/replace/remove.
如果有backstackName,会addToBackStack(backstackName),commit后为了保证立刻生效,会再次executePendingTransactions().
<6>Remove操作基本不用<后来取消了>,
每次基本都是fragment自己直接FragmentManager.popBackStackImmediate()了,能这么做的前提是
这个fragemnt当前是Activity的top state.
0 0
- 项目中Fragment show/pop的使用和实现
- Android中Fragment的Hide和Show
- 使用hide和show方法来实现fragment的切换时当需要fragment重新刷新
- Fragment的hid和show
- Android中Fragment的hide和show的一些技巧
- Android Fragment使用hide和show方法的问题
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- Android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- Fragment的生命周期,以及fragment用hide和show,以及放在Viewpager中的使用
- Fragment的show,add,hide使用
- Fragment show和hide
- 多个Fragment使用show和hide来切换时的画面重叠的问题
- 为什么fragment使用hide()和show()而不使用replace()
- Fragment 使用hide和show,使用onHiddenChanged代替执行生命周期
- [2015.3.12] 很多人不理解我走的路,但我知道,只有成功了,才会让所有人明白
- Oracle DBA常用SQL汇总
- FreeRadius 安装过程记录
- switch-case练习
- 模块[camera]_摄影基础知识: 曝光补偿完全指南
- 项目中Fragment show/pop的使用和实现
- Oracle Dataguard的3种创建方法
- java线程经典理解之Interrupt
- 尝试tomcat jsp
- pcap_t结构体
- window 与ubuntu12.10共享文件 hgfs下为空和不用每次挂载hgfs的方法
- 【转】ContentProvider与ContentResolver使用
- 据说年薪30万的Android程序员必须知道的帖子
- 欢迎使用CSDN-markdown编辑器