2015-04-03 68 views
0

有一個主要活動(A)和兩個片段(F1F2)。這兩個片段都有setRetainInstance(true);聲明。 F2有一個靜態字段bA首先運行F1F1運行F2使用片段管理器按鈕點擊之後。因此,我創建了F2壓縮文件,使用setter方法設置了字段b,並將其放入片段管理器。這是一個好方法嗎?是使用捆綁的唯一「好」的方式來傳輸片段之間的數據?另外如果b不是靜態的?這是否改變了這種情況?這樣可以在片段之間傳輸數據嗎?

+1

我不明白這個問題,但要解決幾個問題......首先,「片段」(像一個「活動」應該永遠不會暴露任何其他「公共靜態」字段或方法應用程序組件訪問它們;其次,除非'F2'是孩子''Fragment'',那麼它們之間的所有通信都應該通過'Activity'完成,'Fragment''不能*創建另一個'Fragment',除非 – Squonk 2015-04-03 10:04:50

+0

嘗試事件總線otto http://square.github.io/otto/ – 2015-04-03 10:31:49

+0

Closers請解釋原因 – Tony 2015-04-03 11:01:48

回答

0

你的方式是ALSO當我們需要RetainFragment即當過我們要保存Fragment這樣的狀態StateFragments之間傳輸的數據只能在當時使用的方式作爲Button財產visibleinvisible狀態,我們使用setRetainInstance(true);

0

片段,就是要獨立的和可重複使用。您不應該使用靜態進行此類操作。 內存管理也是靜態字段不舒服。使用它可以在許多方面是有幫助的,包括savedInstanceState

試想一個情況,當你需要重用片段B在單一屏幕多次。該靜態字段將無法存儲多個值。不是嗎?

您應該遵循標準實踐,因爲他們已經設計了它來處理我們可能不知道的許多場景。只需去捆綁。