Android Компонент навигации - внешний включенный граф, получающий один аргумент - PullRequest
1 голос
/ 09 апреля 2020

Я использую компонент навигации из Jetpack.

Мой основной график огромен, поэтому я решил разбить его на разные графики и использовать функциональность <include />.

Проблема в том, что что некоторые из включенных графиков получают аргументы, но Android, кажется, игнорирует аргументы при создании навигации Directions

Ie:

Основной график (упрощенный)

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <fragment
        android:id="@+id/listFragment"
         android:name="com......ListFragment">
        <action
            android:id="@+id/view_detail"
            app:destination="@id/item_detail"/>
    </fragment>

    <include app:graph="@navigation/included_graph"/>

</navigation>

Включенный граф: (упрощенно)

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/item_detail"
    app:startDestination="@id/itemDetailFragment">
    <argument
        android:name="item_id"
        app:argType="integer" />
    <fragment
        android:id="@+id/itemDetailFragment"
        android:name="com......ItemDetailFragment">

        <argument
            android:name="item_id"
            app:argType="integer" />
    </fragment>
    [...]
</navigation>

Класс, сгенерированный android, имеет вид

class ListFragmentDirections private constructor() {
    companion object {
        fun viewDetail(): NavDirections =
                ActionOnlyNavDirections(R.id.view_detail)
    }
}

Кажется, аргумент, полученный включенным графом, игнорируется - I не может передать аргумент безопасно.

Есть ли обходной путь для этого?

Меня интересует любая альтернатива, позволяющая разбить график на более мелкие файлы на основе <include /> или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...