2017-08-02 63 views
0

我有片段A,它使用setTargetFragment調用片段B. 片段B完成某些操作後,會調用getTargetFragment()。onActivityResult()。getTargetFragment()。onActivityResult()不關閉片段

它工作正常(意思是,片段A的回調onActivityResult被調用,因爲它應該),但片段B不分離或刪除。由於某種原因,用戶仍然停留在片段B上。這怎麼可能?不應該oActivityResult從堆棧中刪除片段,或者至少離開,讓用戶再次看到片段A?

回答

1

該過程與您在設置結果後需要調用finish()的活動幾乎相同。如果出現片段,您應該撥打popBackStack()刪除當前片段,與您撥打finish()以彈出當前活動的方式相同。

+0

那麼使用常規方法在兩個片段之間傳輸數據和使用TargetFragment onActivityResult之間有什麼區別? 在這兩種情況下,片段管理器的狀態根本不會改變 – BVtp

+0

好吧,如果彈出後退堆棧,您將無法將數據傳遞到前一個片段,如果在剛剛調用finish()的Activity中使用相同的方法,您將不會傳遞前一個活動的任何數據。要點是,你不需要重新創建/獲取任何這些實例,只需設置一個結果並彈出即可 – Ricardo

+0

這真的很奇怪。我有兩種情況,我在片段B中調用onActivityResult。其中一個onActivityResult刪除片段B,另一個不包含片段,我必須調用popBackStack。你碰巧知道爲什麼 – BVtp