0

我有一个同步服务,它以一定的时间间隔运行并根据服务器数据更新客户端。现在,如果用户对服务器数据进行任何更改,例如从列表视图中删除项目,那么该更改应该反映到相应的视图片段。

问题是 - 我在我的片段中得到了变化,但这不是自动的。这意味着我必须来回返回相关片段才能看到我的更新。

那么我应该如何从后台运行的同步服务获得通知,我的相应片段视图现在已更改,以便我可以在片段视图上调用刷新功能?

注意:我不想以一定的时间间隔一次又一次地刷新片段。我只想在我的片段视图更改时刷新。

更新:

我得到了适配器计数,它给出了片段中列表视图项的计数。因此,每当我获得更改的计数时,我都需要更新/刷新/重新加载片段。所以我的计数将作为更改片段视图的触发器。

它类似于:

if adapter.getCount() gets changed  //how to get notified about this change
{
        FragmentTransaction transactionOld =getActivity().getSupportFragmentManager().beginTransaction();

        transactionOld.detach(this).commit();

     FragmentTransaction transactionNew = getActivity().getSupportFragmentManager().beginTransaction();

        transactionNew.attach(this).commit();
}
4

1 回答 1

1

您应该BroadcastReceiver在您的 中使用 a ,在Fragment中注册onStart()并取消注册onStop()

当您SyncServices完成并更新数据后,只需使用sendBroadcast(), 发送广播以通知您Fragment它是否可见。

当然,您必须为您的Broadcast, like设置自定义操作com.myapp.ACTION_SYNC,但您将在阅读文档时了解这一点。

于 2013-03-29T10:03:52.513 回答