使用Jetpack导航时,我有片段A-> B-> C-> B,对于片段B的onCreate,如何检查B来自A还是来自C。
答案 0 :(得分:1)
您必须传递一些来自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>
以及片段A和C,您可以像这样传递值
val flowStepNumberArg = 1
val action = FragmentADirections.nextAction(flowStepNumberArg) //For Fragment A
//val action = FragmentCDirections.nextAction(flowStepNumberArg) //For Fragment C
findNavController().navigate(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'
如果您需要更多的知识而不是查看Google's Codelab