jetpack compose如何使用safe args传递参数
时间: 2023-12-23 22:03:37 浏览: 231
JetpackNavigation 导航组件 ④ ( Fragment 跳转中使用 safe args 安全传递参数 )
使用 Jetpack Compose 和 Safe Args 传递参数的步骤如下:
1. 在布局文件中设置目标组件的 ID,例如:
```
<com.google.android.material.button.MaterialButton
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My Button" />
```
2. 在目标组件的代码中使用 `findNavController()` 方法获取导航控制器:
```
val navController = findNavController()
```
3. 在目标组件的代码中设置点击事件,并在事件中使用 `navigate()` 方法进行导航:
```
myButton.setOnClickListener {
val action = MyFragmentDirections.actionMyFragmentToDetailFragment(myArg)
navController.navigate(action)
}
```
其中,`MyFragmentDirections` 是自动生成的 Safe Args 类,`actionMyFragmentToDetailFragment()` 是在 NavGraph 中定义的导航动作。
4. 在 NavGraph 中定义导航动作,并设置参数:
```
<action
android:id="@+id/action_my_fragment_to_detail_fragment"
app:destination="@id/detail_fragment">
<argument
android:name="myArg"
app:argType="string" />
</action>
```
其中,`myArg` 是需要传递的参数名,`app:argType` 是参数类型。
5. 在目标组件的代码中使用 `arguments` 属性获取传递的参数:
```
val args = DetailFragmentArgs.fromBundle(arguments)
val myArg = args.myArg
```
这样就可以在 Jetpack Compose 中使用 Safe Args 传递参数了。
阅读全文