使用观察者模式更新Fragment的内容

最近有个需求,就是在Fragment没有切换的时候(show,hide)更新Fragment显示的内容,想了一会,终于想到能够用观察者模式来解决这个问题的。ide

定义一个【被观察者(接口)】:spa

public interface ISubject { void addObserver(PoemFragment obj); void deleteObserver(PoemFragment obj); void notifyObserver(); }

 

定义一个【观察者(接口)】:code

public interface IObserver { void update(); }

 

IndexActivityimplements ISubject,而后再IndexActivity中定义个集合保存Fragment:server

 

 

private List fragments = new ArrayList<>();

 

IndexActivity实现了ISubject的3个方法:blog

@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中使用:rem

if (myFragment.isAdded()){ transaction.show(dynastyFragment); notifyObserver();//通知Fragment更新 
} else { transaction.add(R.id.framelayout,dynastyFragment); }

 

哈哈哈,大功告成了!!!其实很简单的get

相关文章
相关标签/搜索