簡體   English   中英

為什么我不能通過導航組件中的全局操作傳遞 arguments?

[英]Why I can´t pass arguments with global action in navigation component?

我正在嘗試將具有全局操作的參數從一個目的地傳遞到另一個目的地。 我在 inte.net 上看到了這種方法,但由於任何原因它不起作用,我找不到解決方案。 如果有任何幫助,我將不勝感激。 我如何嘗試傳遞論點:

epoxyController = EventListEpoxyController { eventClickedID ->
        val navDirections = NavGraphDirections.actionGlobalEventHolder(eventID = eventClickedID)
        findNavController().navigate(navDirections)

我在導航圖中向事件持有者目的地添加了一個參數,還添加了一個全局操作。 但由於某些原因,我找不到它的值,這個詞是紅色的,錯誤就像

非 Kotlin 函數不允許名為 arguments 找不到具有此名稱的參數:eventID < 這就是我的導航圖的樣子:

<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

當然,使用命名參數從來都不是必需的,因此您可以完全不使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM