2014-12-05 100 views
1

我試圖使用回調將數據從一個片段傳遞到另一個片段,但我很難做到這一點。在我的活動中,我調用片段A,它調用片段B。在片段B我選擇一個項目,我需要將該項目傳遞給片段A。有人能告訴我我該怎麼做?使用回調在兩個片段之間傳遞數據

我知道有一個回調,我可以從片段B獲取數據的活動,但我怎麼能發送數據與保持該片段的片段狀態A

+0

你可以添加一個監聽器,或廣播接收器。 – zgc7009 2014-12-05 16:27:37

+0

@ zgc7009你可以給個例子嗎? – 2014-12-05 16:28:48

+0

將其存儲在SharedPreferences中,以便在任何地方訪問它 - 然後不需要偵聽器/接收器。和/或使用Otto庫,它爲Android提供一個非常需要的通知總線。 – Alchete 2014-12-05 16:29:35

回答

2

您的活動應執行回調,回調可以找到片段B並將數據發佈到其公共方法之一。如果你讓片段B中的公共方法接受你需要的任何數據,你應該能夠直接通過它。

事情是這樣的:

@Override 
public void onCallback(String data) { 
    FragmentB frag = (FragmentB) getSupportFragmentManager().findFragmentByTag(FragmentB.class.getSimpleName()); 
    if (frag != null) { 
     frag.myMethod(data); 
    } 
} 
2

爲什麼不使用Activity爲你的「交通管制」:有Fragment一個回調的Activity然後有Activity呼叫到Fragment B.保持彼此分離,所以他們不知道對方的片段。

+0

我喜歡這樣如果碎片僅用於單個活動,並且最終不會創建在不同活動中管理相同碎片的冗餘代碼,那麼這個想法也是一樣。 – zgc7009 2014-12-05 16:32:08