簡體   English   中英

發送數據時如何使用導航組件導航回上一個片段?

[英]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是未知的,或者BC是可以在很多地方使用的流程部分,所以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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM