Я использую компонент навигации из 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 />
или нет.