使用觀察者模式更新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

相關文章
相關標籤/搜索