【问题标题】:refresh fragment view after getting synch service获取同步服务后刷新片段视图
【发布时间】:2013-03-29 09:57:52
【问题描述】:

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

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

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

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

更新:

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

类似于:

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();
}

【问题讨论】:

    标签: android android-fragments synchronize


    【解决方案1】:

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

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

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

    【讨论】:

    • 能否请您在上下文中提供一个示例,因为我的片段已经在扩展其他一些类,所以我不能做像class FragmentA extends BroadcastReceiver 这样的事情。
    • 片段不能扩展BroadcastReceiver。这没有道理。我听不懂你在说什么。
    • 好的,那么我误解了如何在片段中使用BroadcastReceiver。我想通过在片段中扩展它然后使用它的方法来使用它。您能否就如何实现这一目标提出一些想法?
    • 也请查看我的更新。我只需要更新适配器计数的视图。有什么想法吗?
    • 我听不懂。您将无法以这种方式实现它。 “刷新/重新加载片段”是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多