代码之家  ›  专栏  ›  技术社区  ›  David Guo

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

  •  0
  • David Guo  · 技术社区  · 4 年前

    0 回复  |  直到 4 年前
        1
  •  1
  •   Keyur Nimavat    4 年前

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

    <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>
    

    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"
    //...
    }
    

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

    Google's Codelab