2013-09-24 52 views
1

我搞亂了一個由兩個片段組成的應用程序,每個片段都在自己的選項卡中。一個是listfragment,另一個是mapfragment。這兩個片段都需要位置更新作爲位置更改幾個片段需要位置更新

我在閱讀this教程。

我想知道是否應該在主機活動上實現此功能,並在位置更新時將位置傳遞給每個片段。但我不確定如何去做這件事。因爲listfragment需要將它傳遞給與類關聯的加載器。

或者爲每個片段實現回調,並可能保持ErrorDialogFragment和servicesConnected作爲宿主類的成員?甚至在單獨的課堂上?避免重複的代碼。

你們認爲什麼?

回答

0

一種選擇是使用LocalBroadcastManager:

在每個片段需要這個位置的,登記,比方說,行動「LOCATION_WAS_JUST_UPDATED」的接收器。

我不確定你在哪裏檢索位置,但無論如何它都能正常工作。例如,如果是在一個服務,你所要做的就是調用:

LocalBroadcastManager.getInstance(mContext).sendBroadcast(new Intent("LOCATION_WAS_JUST_UPDATED")); 

當然你可以在束通過的位置,這個意圖,或只是將其設置在持久容器和片段接收這個廣播可以更新他們的本地位置。

+0

我檢索主(主機)活動的位置。 LocalBroadcastManager似乎是個好主意。但是我仍然不確定程序流程應該如何。因爲在主機上,我應該開始一些進度對話,我應該在單個片段中結束。 – user672009

+0

那就更簡單了。你應該在Activity中實現一個getLocation函數。每個活動應該通過使用'getActivity'.'getLocation'獲得開始使用此函數的位置。如果該位置不可用,則顯示加載程序,直到收到廣播。或者更簡單一些,只要允許活動顯示加載器,並且只在檢索位置時顯示片段。你有太多的選擇。 –