为什么我不能在导航组件中通过全局操作传递参数?
Why I can´t pass arguments with global action in navigation component?
我正在尝试将具有全局操作的参数从一个目的地传递到另一个目的地。
我在互联网上看到了这种方法,但由于某种原因它不起作用,而且我找不到解决方案。
如果有任何帮助,我将不胜感激。
我如何尝试传递论点:
epoxyController = EventListEpoxyController { eventClickedID ->
val navDirections = NavGraphDirections.actionGlobalEventHolder(eventID = eventClickedID)
findNavController().navigate(navDirections)
我在导航图中向事件持有者目的地添加了一个参数,还添加了一个全局操作。
但由于某些原因,我找不到它的值,这个词是红色的,错误是
Named arguments are not allowed for non-Kotlin functions
Cannot find a parameter with this name: eventID
<
Thats how my navgraph looks like :
<fragment
android:id="@+id/eventHolder"
android:name="de.n.newtest.ui.Fragments.Details.EventHolderKT"
android:label="fragment_event_holder">
<argument
android:name="eventid"
android:defaultValue="-1"
app:argType="integer" />
<action
android:id="@+id/action_global_eventHolder"
app:destination="@id/eventHolder"
app:enterAnim="@anim/holderslideinright"
app:exitAnim="@anim/holderslideoutleft"
app:popEnterAnim="@anim/holderslideinleft"
app:popExitAnim="@anim/holderslideoutright">
我错过了什么?
val navDirections = NavGraphDirections.actionGlobalEventHolder(eventID = eventClickedID)
eventID
是由IDE创建的,说明这个参数是指向eventClickedID
的回调参数,不能像报错那样自己写:
Named arguments are not allowed for non-Kotlin functions Cannot find a parameter with this name: eventID < Thats how my navgraph looks like :
所以,您只需要删除它:
epoxyController = EventListEpoxyController { eventClickedID ->
val navDirections = NavGraphDirections.actionGlobalEventHolder(eventClickedID)
findNavController().navigate(navDirections)
}
您正在使用 android:name="eventid"
。这意味着 actionGlobalEventHolder
的命名参数是 eventid
,而不是 eventID
。
您需要将 android:name
更改为 eventID
或更新您的代码以使用 eventid
。
当然,使用命名参数从来都不是必需的,因此您可以完全不使用它。
我正在尝试将具有全局操作的参数从一个目的地传递到另一个目的地。 我在互联网上看到了这种方法,但由于某种原因它不起作用,而且我找不到解决方案。 如果有任何帮助,我将不胜感激。 我如何尝试传递论点:
epoxyController = EventListEpoxyController { eventClickedID ->
val navDirections = NavGraphDirections.actionGlobalEventHolder(eventID = eventClickedID)
findNavController().navigate(navDirections)
我在导航图中向事件持有者目的地添加了一个参数,还添加了一个全局操作。 但由于某些原因,我找不到它的值,这个词是红色的,错误是
Named arguments are not allowed for non-Kotlin functions Cannot find a parameter with this name: eventID < Thats how my navgraph looks like :
<fragment
android:id="@+id/eventHolder"
android:name="de.n.newtest.ui.Fragments.Details.EventHolderKT"
android:label="fragment_event_holder">
<argument
android:name="eventid"
android:defaultValue="-1"
app:argType="integer" />
<action
android:id="@+id/action_global_eventHolder"
app:destination="@id/eventHolder"
app:enterAnim="@anim/holderslideinright"
app:exitAnim="@anim/holderslideoutleft"
app:popEnterAnim="@anim/holderslideinleft"
app:popExitAnim="@anim/holderslideoutright">
我错过了什么?
val navDirections = NavGraphDirections.actionGlobalEventHolder(eventID = eventClickedID)
eventID
是由IDE创建的,说明这个参数是指向eventClickedID
的回调参数,不能像报错那样自己写:
Named arguments are not allowed for non-Kotlin functions Cannot find a parameter with this name: eventID < Thats how my navgraph looks like :
所以,您只需要删除它:
epoxyController = EventListEpoxyController { eventClickedID ->
val navDirections = NavGraphDirections.actionGlobalEventHolder(eventClickedID)
findNavController().navigate(navDirections)
}
您正在使用 android:name="eventid"
。这意味着 actionGlobalEventHolder
的命名参数是 eventid
,而不是 eventID
。
您需要将 android:name
更改为 eventID
或更新您的代码以使用 eventid
。
当然,使用命名参数从来都不是必需的,因此您可以完全不使用它。