[英]how to navigate back to previous fragment using navigation component while sending data?
我有 4 個片段,A,B,C。片段 A 將是主要片段,我將從片段 A 導航到片段 B,然后片段 B 將結果返回到片段 A。然后我將從片段 A 導航到片段 C , 和片段 c 會做一些操作,並返回一個結果給片段 A。每次片段 A 都會顯示並保留每個片段返回的結果
片段 A 到另一個片段之間的導航是使用此代碼實現的
val bundle = Bundle()
bundle.putBoolean("data", true)
findNavController().navigate(R.id.myAction, toVoicePassphraseRecognitionbundle)
我的問題是,要返回片段 A,我也使用 findNavController().navigate() 但這樣做會創建一個將添加到堆棧中的新片段,所以我的問題是如何從片段 B 導航回A,或 C 到 A,同時保持視圖 state 原樣,而不創建新的片段 A。
問題是,您在操作中將Fragment A
設置為目標,它的作用是創建Fragment
的新實例。
您真正想要的是go back to
,而不是go to
.
所以我們對 go 所做的事情,我們彈出我們的返回堆棧。
<fragment
android:id="@+id/fragmentC"
android:name="com.sample.project.FragmentC"
android:label="FragmentC">
<action
android:id="@+id/navigate_C_to_A"
app:popUpTo="@+id/fragmentA"
app:popUpToInclusive="false" />
</fragment>
popUpTo
是你想登陸的地方
popUpToInclusive
表示您是否希望此片段也從堆棧中彈出?
假設你的流程就像 A->B->C->A
但是Fragment A
是未知的,或者B
和C
是可以在很多地方使用的流程部分,所以A
不會每次都是A
在這種情況下:
<fragment
android:id="@+id/fragmentC"
android:name="com.sample.project.FragmentC"
android:label="FragmentC">
<action
android:id="@+id/navigate_C_to_before_B"
app:popUpTo="@+id/fragmentB"
app:popUpToInclusive="true" />
</fragment>
popUpToInclusive
是這里的關鍵
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.