我正在使用 Android Jetpack 导航组件。我有一个带有 id 的嵌套导航图,比如嵌套图R.id.nested_graph
的第一个Fragment
接收一个参数。
<navigation
android:id="@+id/nested_graph"
android:label="Nested Graph"
app:startDestination="@id/firstFragment">
<fragment
android:id="@+id/firstFragment"
android:name="...."
android:label="....">
<argument
android:name="item_id"
app:argType="integer" />
</fragment>
[...]
</navigation>
如何使用安全 args将参数传递给嵌套图?
目前,我需要在包中手动传递参数,使用直接接收嵌套图 id 的 API:
val args = Bundle()
args.putInt("item_id", itemId)
navController.navigate(R.id.nested_graph, args)
我想使用安全的参数,并执行以下操作:
val directions = OrigininFragmentDirections.nestedGraph(itemId)
navController.navigate(directions)
但是在尝试这样做时,我在构建时收到以下错误:
Too many arguments for public final fun nestedGraph(): NavDirections defined
问题是导航图预处理正在生成工厂方法来创建NavDirections
对象,而签名中没有所需的参数。
嵌套图的声明如下所示: