2013-10-15 66 views
-1

我的應用程序有一個主要ActivityFrameLayout加載一些Fragments,其中大部分管理http數據請求。如何將片段傳遞給其他片段?

當連接丟失時,我啓動一個特定的Fragment「NoConnectionFragment」,其中帶有「無法連接Internet」文本和Button「重試」。

當點擊「重試」時,我想重新加載之前的Fragment,那個數據加載失敗,有些數據指定Fragment的狀態。

我可以傳遞Bundle中的狀態數據,但是我怎麼能傳遞給NoConnectionFragment數據什麼Fragment重新加載?有沒有辦法直接通過Fragment

回答

0

如何存儲前一個片段的名稱。例如:如果在啓動NoConnectionFragment之前FragmentA處於活動狀態,則在存儲此狀態的父活動中保留一個靜態變量int。

static int PREV_FRAGMENT_INDEX; //index can be 0 for FragmentA, 1 for FragmentB etc 

當點擊重試按鈕,只需要檢查這個變量來推出相應的片段:

onClick(View v) 
{ 
    switch(getActivity().PREV_FRAGMENT_INDEX) 
    { 
     case 0: //launch Fragment A 

     case 1: //launch Fragment B etc 
    } 
} 
+0

有沒有辦法直接傳遞片段類名或什麼,以避免開關/大小寫? – jul

+0

我不這麼認爲。如果你是一個活動,你可以將它存儲在類變量中,並在創建一個Intent時傳遞它,但片段管理器需要完全初始化的片段對象,所以名稱不會這樣做。 –

0

您無法將片段傳遞給其他片段,因爲片段不應該以這種方式工作,片段也可以由FragmentManagers進行管理。你可以做的是pass data from a Fragment to another

+0

那麼如何才能知道什麼'Fragment'我應該點擊重試時加載? – jul

+0

您可以將責任傳遞給所有者活動。並且從活動決定要加載哪個片段或片段是否已經存在,請向其發送消息。 – gunar

+0

但是我怎麼知道加載哪個片段?我可以通過課程名稱嗎? – jul