最近有个需求,就是在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的内容的更多相关文章

  1. SQL技巧两则:选择一个表的字段插入另一个表,根据其它表的字段更新本表内容

    最近,在作django数据表迁移时用到的. 因为在django中,我把本来一个字符型字段,更改成了外键, 于是,哦喝~~~字符型字段相当于被删除了, 为了能导入这些字段的外键信息,于是出此下策. 其实 ...

  2. [转]MFC子线程中更新控件内容的两种办法

    一.概述 每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率.针对界面来说,还能提高界面的响应能力.一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线 ...

  3. SQL通过Datatable更新数据库表内容

    SQL通过Datatable更新数据库表内容   //要注意的一点是在Select语句中要选择的列中必须包含主键的列,此外不支持多表连接查询 DataTable dt = new DataTable( ...

  4. HMS Core 分析服务 6.4.1版本上线啦,快来看看更新了哪些内容。

    更新概览 支持转化事件回传至华为应用市场商业推广,便捷归因,实时调优. 卸载分析模型支持用户卸载前事件和路径分析,深度剖析卸载根因. 实时漏斗体验开放,灵活定位异常流失. 详情介绍 更新一:全面开放深 ...

  5. [android更新类的内容开发APP]四、项目布局的基本功能(继续)

    昨天,只拿到电脑,别说,眼泪 http://joveth.github.io/funny/ 1.选项卡的滑动效果 要知道.用这个选项卡就是想让它滑动起来,不然的话.我才不喜欢用它呢. 在让他滑动之前, ...

  6. poi 技术动态更新 Excel模板内容,动态更新内容

    1.控制器方法 private URL base = this.getClass().getResource(""); /** * 流拍之后,可以下载询价单 * * @param ...

  7. wordpress通过$wpdp更新数据表内容

    如下面的代码 更新id为1的数据 table 指的是要更新的数据表 第一个数组 array( 'column1' => 'value1', 'column2' => 'value2' ) ...

  8. CriminalIntent程序中Fragment相关内容

    Activity中托管UI fragment有两种方式: 添加fragment到acitivity中 在activity代码中添加fragment 第一种方法即将fragment添加到acitivit ...

  9. Swipe2.1更新——移动Web内容滑块

    Swipe JS 是一个轻量级(3.7 kb) mobile slider,支持 1:1 触摸移动(基于精确的触摸位置的内容滑动). 但是我使用一段时间后发现两个bug,所以在官方2.0(官网http ...

随机推荐

  1. orcale开篇

    1.数据库系统和数据库的管理系统  数据库系统=数据库的管理系统+oper操作员+硬件2.Oracle的版本  8i/ 9i 10g/11g  12c(cloud)3.实例和数据库的关系  实例:数据 ...

  2. JS调试debug

    1. debugger; 我以前也说过,你可以在JavaScript代码中加入一句debugger;来手工造成一个断点效果.需要带有条件的断点吗?你只需要用if语句包围它: if (something ...

  3. 【HHHOJ】NOIP2018 模拟赛(二十五) 解题报告

    点此进入比赛 得分: \(100+100+20=220\)(\(T1\)打了两个小时,以至于\(T3\)没时间打了,无奈交暴力) 排名: \(Rank\ 8\) \(Rating\):\(+19\) ...

  4. BZOJ 2502: 清理雪道

    BZOJ 2502: 清理雪道 标签(空格分隔): OI-BZOJ OI-最小流 OI-上下界网络流 Time Limit: 10 Sec Memory Limit: 128 MB Descripti ...

  5. handlebars用法

    为什么需要模板引擎 关于前端的模板引擎,我用一个公式来解释 模板引擎 模板 + 数据 ========> html页面 模板引擎就像是html的解析生成器,将对应的模板填充完数据之后生成静态的h ...

  6. 2018.6.6 基于Oracle数据库的航天信息系统JDBC练习

    综合练习 一.语言和环境 A.实现语言 Java B.环境要求 JDK 6.0及其以上版本.MyEclipse7.5及其以上版本.Oracle11g.PL/SQL Developer 二.功能要求 开 ...

  7. 【Java-JVM】定量分析解决OutOfMemoryError: PermGen space, 来看科学量化分析

    网络上搜集,有操作有分析. 一.问题 在部署大型的 Java Web项目的时候,或者在 MyEclipse 中进行调试的时候经常出现: OutOfMemoryError: PermGen space ...

  8. Incorrect key file for table './xx_db/xx_table.MYI'; try to repair it

    解决办法: 可以先运行 CHECK TABLE 表名 检查下是否存在错误. 然后运行 REPAIR TABLE 表名 进行修复.

  9. LigerUI的下拉框行和树的设置(表单生成)

    http://blog.csdn.net/dxnn520/article/details/8194767 // ---------------------- // [下拉树设置 -- 单选] {dis ...

  10. vue2.0在页面中自定义组件模块,以及页面与组件之间的数据传递

    1,在初始文件index.html中加入要引入的模块,注意驼峰命名的方式(我就是没写成驼峰,报错) <!DOCTYPE html> <html> <head> &l ...