2013-03-29 36 views
0

我有一個以特定間隔運行並根據服務器數據更新客戶端的同步服務。現在,如果用戶對服務器數據進行任何更改(如從列表視圖中刪除項目),則該更改應反映到相應的視圖片段。獲取同步服務後刷新片段視圖

問題是 - 我正在獲取片段中的更改,但這不是自動的。這意味着我必須來回回顧我的相關片段以查看我的更新。

那麼我應該如何從後臺運行的同步服務得到通知,我的相應片段視圖現在已更改,以便我可以在我的 片段視圖上調用我的刷新功能?

注:我不想一次又一次刷新片段。當我的片段視圖被更改時,我只想要 刷新。

UPDATE:

我得到的適配器數量,讓在片段的列表視圖項目總數。 所以每當我得到改變的計數,我需要更新/刷新/重新加載片段。所以我的計數將作爲觸發器來改變片段視圖。

它是這樣的:

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

回答

1

你應該在你Fragment使用BroadcastReceiver,其註冊onStart()onStop()註銷它。

當您的SyncServices已完成且已更新數據時,只需使用sendBroadcast()發送廣播,以通知您的Fragment是否可見。

當然,您需要爲您的Broadcast設置自定義操作,例如com.myapp.ACTION_SYNC,但您將會看到docs,因此您將瞭解該操作。

+0

可以請你在上下文中提供一個例子,因爲我的片段已經擴展了一些其他類,所以我不能做類似'class FragmentA extends BroadcastReceiver'的東西。 –

+0

片段不能擴展'BroadcastReceiver'。這個不成立。我不明白你在說什麼。 –

+0

好吧,然後我誤解了如何在片段中使用'BroadcastReceiver'。我想通過將它擴展到一個片段中然後使用它來使用它。你能否介紹一下如何實現這個目標? –