使用观察者模式更新Fragment的内容
最近有个需求,就是在Fragment没有切换的时候(show,hide)更新Fragment显示的内容,想了一会,终于想到可以用观察者模式来解决这个问题的。
定义一个【被观察者(接口)】:
- public interface ISubject {
- void addObserver(PoemFragment obj);
- void deleteObserver(PoemFragment obj);
- void notifyObserver();
- }
定义一个【观察者(接口)】:
- public interface IObserver {
- void update();
- }
在IndexActivity中implements ISubject,然后再IndexActivity中定义个集合保存Fragment:
- private List fragments = new ArrayList<>();
IndexActivity实现了ISubject的3个方法:
- @Override
- public void addObserver(PoemFragment obj) {
- fragments.add(obj);
- }
- @Override
- public void deleteObserver(PoemFragment obj) {
- fragments.remove(obj);
- }
- @Override
- public void notifyObserver() {
- for (int i =0;i<fragments.size();i++){
- fragments.get(i).update();
- }
- }
接下来,让MyFragment implements IObserver,实现update方法,这个方法里面做fragment的更新操作
在indexActivivity中需要更新Fragment的地方,调用 notifyObserver() 就可以了,我在indexActivity中使用:
- if (myFragment.isAdded()){
- transaction.show(dynastyFragment);
- notifyObserver();//通知Fragment更新
- } else {
- transaction.add(R.id.framelayout,dynastyFragment);
- }
哈哈哈,大功告成了!!!其实很简单的
使用观察者模式更新Fragment的内容的更多相关文章
- SQL技巧两则:选择一个表的字段插入另一个表,根据其它表的字段更新本表内容
最近,在作django数据表迁移时用到的. 因为在django中,我把本来一个字符型字段,更改成了外键, 于是,哦喝~~~字符型字段相当于被删除了, 为了能导入这些字段的外键信息,于是出此下策. 其实 ...
- [转]MFC子线程中更新控件内容的两种办法
一.概述 每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率.针对界面来说,还能提高界面的响应能力.一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线 ...
- SQL通过Datatable更新数据库表内容
SQL通过Datatable更新数据库表内容 //要注意的一点是在Select语句中要选择的列中必须包含主键的列,此外不支持多表连接查询 DataTable dt = new DataTable( ...
- HMS Core 分析服务 6.4.1版本上线啦,快来看看更新了哪些内容。
更新概览 支持转化事件回传至华为应用市场商业推广,便捷归因,实时调优. 卸载分析模型支持用户卸载前事件和路径分析,深度剖析卸载根因. 实时漏斗体验开放,灵活定位异常流失. 详情介绍 更新一:全面开放深 ...
- [android更新类的内容开发APP]四、项目布局的基本功能(继续)
昨天,只拿到电脑,别说,眼泪 http://joveth.github.io/funny/ 1.选项卡的滑动效果 要知道.用这个选项卡就是想让它滑动起来,不然的话.我才不喜欢用它呢. 在让他滑动之前, ...
- poi 技术动态更新 Excel模板内容,动态更新内容
1.控制器方法 private URL base = this.getClass().getResource(""); /** * 流拍之后,可以下载询价单 * * @param ...
- wordpress通过$wpdp更新数据表内容
如下面的代码 更新id为1的数据 table 指的是要更新的数据表 第一个数组 array( 'column1' => 'value1', 'column2' => 'value2' ) ...
- CriminalIntent程序中Fragment相关内容
Activity中托管UI fragment有两种方式: 添加fragment到acitivity中 在activity代码中添加fragment 第一种方法即将fragment添加到acitivit ...
- Swipe2.1更新——移动Web内容滑块
Swipe JS 是一个轻量级(3.7 kb) mobile slider,支持 1:1 触摸移动(基于精确的触摸位置的内容滑动). 但是我使用一段时间后发现两个bug,所以在官方2.0(官网http ...
随机推荐
- Linux常用命令汇总(渐更)
后台启动jar nohup java -jar xxxxx.jar > xxxx.out 2>&1 & 封禁ip iptables -I INPUT -s 200.194. ...
- 解决在eclipse中导入项目名称已存在的有关问题
新建项目-Import-File System-找到相应的文件夹-Overwrite existing resources without warning打钩,选中项目即可
- Vue汇总(搬砖)
掘金: https://juejin.im/ Element: http://element-cn.eleme.io/#/zh-CN 验证码GEETEST---极验 : https://docs.ge ...
- javascript之常用正则表达式
一.校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9 ...
- 零基础逆向工程30_Win32_04_资源文件_消息断点
1 资源文件,创建对话框 详细步骤: 1.创建一个空的Win32应用程序 2.在VC6中新增资源 File -> New -> Resource Script 创建成功后会新增2个文件:x ...
- isset或array_key_exists,检查数组键是否存在
今天在导出报表的时候遇到了一个问题,undefined index:pid,然后就纳闷了,我的数组里面根本就没有pid,为什么会出现这个错误呢,我遍历了一下数组,发现果然有pid这个键,奇怪呀,我有做 ...
- 【ros depthimage_to_laser kinect2】
kinect2的深度图可以转换成激光来用,使用depthimage_to_laser 这个tf是用来给rviz显示的 1)开启kinect2 rosrun kinect2_bridge kinect2 ...
- iphone开发笔记
1.uiimage图片拉伸 - (void)stretchBackgroundImage { //UIImage *originalImage = [[self backgroundImageForS ...
- 一、Web 如何工作的
平常我们在浏览器中输入一个网址,随即看到一个页面,这个过程是怎样实现的呢?下面用一幅图来说明: 整个流程如下: 1.域名解析 浏览器会解析域名对应的IP地址 PS:DNS服务器的知识 2.建立TCP ...
- 浅谈 import / export
import { ngModule } from '@angular/core'; import { AppComponent } from './app.component'; export cla ...