由于片段可以使用轻松地访问活动
getActivity(),因此我将使活动成为调度更新的中心。
听起来您已经使用数据库处理了持久性部分,而您所需要做的只是一些更新事件。因此,这里去:
定义一个侦听器接口。我通常将此作为活动中的内部接口进行操作:
public interface DataUpdateListener { void onDataUpdate();}在活动中添加数据结构以跟踪侦听器:
private List<DataUpdateListener> mListeners;
不要忘记在构造函数中初始化:
mListeners = new ArrayList<>();
将注册/注销方法添加到活动中:
public synchronized void registerDataUpdateListener(DataUpdateListener listener) { mListeners.add(listener);}public synchronized void unregisterDataUpdateListener(DataUpdateListener listener) { mListeners.remove(listener);}将事件方法添加到您的活动中:
public synchronized void dataUpdated() { for (DataUpdateListener listener : mListeners) { listener.onDataUpdate(); }}让您的片段实现DataUpdateListener:
public class MyFragment extends Fragment implements DataUpdateListener {
并实施该方法
@Override public void onDataUpdate() { // put your UI update logic here }覆盖
onAttach()
并onDestroy()
在片段中进行注册/注销:@Overridepublic void onAttach(Activity activity) { super.onAttach(activity); ((MainActivity) activity).registerDataUpdateListener(this);}@Overridepublic void onDestroy() { super.onDestroy(); ((MainActivity) getActivity()).unregisterDataUpdateListener(this);}在片段的UI更新事件中触发事件:
@Overridepublic void onClick(DialogInterface dialog, int listIndex) { database.add(listIndex,object); database.remove(listIndex,object); ((MainActivity) getActivity()).dataUpdated();}



