Android 在Jetpack导航中,如何知道哪个动作触发了我的碎片

Android 在Jetpack导航中,如何知道哪个动作触发了我的碎片,android,android-jetpack,android-jetpack-navigation,Android,Android Jetpack,Android Jetpack Navigation,使用Jetpack导航,我有片段A->B->C->B,对于片段B的一次创建,如何检查B来自A或从C返回。您必须从片段A->B或C->B传递一些数据 例如,您可以根据您的要求发送整数值、字符串或任何其他值。我用整数作为例子 <fragment android:id="@+id/flow_step_one_dest" android:name="com.example.android.codelabs.navigation.FlowStepFragment&quo

使用Jetpack导航,我有片段A->B->C->B,对于片段B的一次创建,如何检查B来自A或从C返回。

您必须从片段A->B或C->B传递一些数据

例如,您可以根据您的要求发送整数值、字符串或任何其他值。我用整数作为例子

<fragment
android:id="@+id/flow_step_one_dest"
android:name="com.example.android.codelabs.navigation.FlowStepFragment"
tools:layout="@layout/flow_step_one_fragment">
<argument
    android:name="flowStepNumber"
    app:argType="integer"
    android:defaultValue="1"/>

<action...>
</action>
在片段B中,您可以通过以下方式检索:

val safeArgs: FlowStepFragmentArgs by navArgs()
val flowStepNumber = safeArgs.flowStepNumber
如果尚未为safeArgs添加依赖项,则可以将其添加到项目级build.gradle

dependencies {
    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navigationVersion"
//...
}
顶部的应用程序级别build.gradle添加此行

apply plugin: 'androidx.navigation.safeargs.kotlin'

如果您需要更多的了解而不是签出

当您从C返回BY时,将不会调用onCreate,您可以设置a并在
活动
中对其进行验证。您可以检查backbackbackADM答案是否符合我的要求。我也在徘徊,如果有一些代码可以检查B来自何处。不要更新导航配置文件。这是将一些数据传递给片段B的正确方法。只需传递Int值,如A中的1和C片段中的2。然后在片段B中使用safeArgs进行检查。如果您只是在Frgamnet B导航文件中添加了简单参数,会出现什么问题?没有问题。事实上我用你的方法来追踪源头。但似乎有太多的导航需要改变。我的应用程序与工作流程相关,不同的案例有不同的工作流程,但它们实际上是同一个UI页面。您不需要更改导航,只需在仅使用导航的位置添加参数。如果您知道如何使用ViewModel而不能使用它,则可以使用ViewModel。
apply plugin: 'androidx.navigation.safeargs.kotlin'