使用观察者模式更新Fragment的内容
2024-09-21 23:56:57
最近有个需求,就是在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);
}
哈哈哈,大功告成了!!!其实很简单的
最新文章
- 课堂Java小程序(加减乘除与验证码)
- css3伪类温故知新
- MVC中使用jquery uploadify上传图片报302错误
- Hibernate学习笔记(二)
- ASP.NET mvc异常处理的方法
- html5之我見
- C#中多线程的简单应用
- 总结showModalDialog在开发中的一些问题
- shape的使用
- Spring Dubbo 开发笔记
- WC2019游记
- Go-Ethereum 1.7.2 结合 Mist 0.9.2 实现众筹合约的实例
- Eclipse优化常用方法
- 一些有用的js插件
- jQuery通过input标签的name获取值
- openwrt-rpcd服务ACL配置错误风险分析
- DataTable拷贝DataRow
- 命令行 AppleScript 操控 iTerm2
- 微软Holographic将更名为Windows Mixed Reality
- from __future__ import print_function