android Конструктор NavDirections с не сгенерированными аргументами - PullRequest
0 голосов
/ 17 января 2020

Я использую Android Jetpack Navigation рамки с native java. Дело в том, что compiler автоматически генерирует класс, отвечающий за действия, определенные в графе навигации, с соответствующим аргументом setters and getters, но он не генерирует конструктор с аргументами, а просто пустой static constructor.

Есть ли способ заставить safeArgs plugin или Navigation framework создать этот конструктор с помощью arguments?

my xml:

<?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"
    android:id="@+id/edicion_basica_navigation"
    app:startDestination="@id/nav_A_fragment">

<fragment
    android:id="@+id/nav_A_fragment"
    android:name="com.fragments.A"
    android:label="@string/A"
    tools:layout="@layout/fragment_a">
    <argument
        android:name="@string/arg_id"
        android:defaultValue="0"
        app:argType="integer" />
    <argument
        android:name="@string/arg_rowid"
        android:defaultValue="0"
        app:argType="integer" />
</fragment>


<fragment
    android:id="@+id/nav_B_fragment"
    android:name="com.fragments.B"
    android:label="@string/b"
    tools:layout="@layout/fragment_b">
    <argument
        android:name="@string/arg_id"
        android:defaultValue="0"
        app:argType="integer" />
    <argument
        android:name="@string/arg_rowid"
        android:defaultValue="0"
        app:argType="integer" />    

</fragment>

<action
    android:id="@+id/A_to_B"
    app:destination="@id/nav_B_fragment" />

</navigation>

Спасибо

1 Ответ

0 голосов
/ 17 января 2020

Не могли бы вы поделиться XML для целевого фрагмента, к которому вы хотите go? Вы должны определить эти аргументы в самом целевом фрагменте. вот так:

 <fragment android:id="@+id/myFragment" >
     <argument
         android:name="myArg"
         app:argType="integer"
         android:defaultValue="0" />
 </fragment>

Кроме того, не забудьте потом build, чтобы сгенерировать классы.

...