2016-11-16 23 views
0

具有片段A和B,B有點擴展A.從B更新UI數據需要存儲回A,並且A的用戶界面決定是否保存到數據庫。如何將數據從一個片段傳遞到被替換的fragmnet

所以先把A放在後臺堆棧上,然後在某個時候它需要B和B放在後臺堆棧上,並用'replace()'放在持有者中。

將數據傳遞給B可能不合理。 如何將數據從B片段傳遞迴A片段(如果A由'持有者B'替換()',並且當前不顯示或'存在')?

Bundle args = new Bundle(); 
args.putSerializable(TAG_MY_CLASS, myClass); 
Fragment bFrgmt = new B(); 
bFrgmt.setArguments(args); 
getFragmentManager() 
    .beginTransaction() 
    .replace(R.id.holder, bFrgmt, TAG_B_FRAGMENT) 
    .addToBackStack(TAG_B_FRAGMENT).commit(); 
+0

通常碎片之間的通信是通過活動(模式觀察者)完成的。所以活動的片段告訴它的活動,一些動作發生(通過界面),活動可以告訴它Fragment1 – alla

+0

謝謝阿拉!我想我的問題是,當B仍然在屏幕上並且A處於未知狀態時(已經在同一'持有者上被B替換了),從B到A交付的最佳方式是什麼。想到可能趕上B大爆炸事件,然後由於操作系統將在'持有人'中帶回A,以便我們可以在那時向A提供數據。有更好的方法嗎? – lannyf

回答

2

Developers網站:

通常你會想要一個片段與另一個通信, 例如更改基於用戶事件的內容。全部 片段與片段之間的通信通過關聯的 活動完成。兩個碎片不應該直接通信。

首先將數據從片段發送到活動,然後在活動中接收此數據,然後從活動中您可以將數據發送到片段,並在片段中接收onCreateView方法。

您可以藉助其活動在片段之間進行通信。您可以使用this方法在活動和片段之間進行通信。

相關問題