Nested Navigation Graphを使った際、SafeArgsのコード生成でうまくいかないので、少し工夫をする必要があります。
環境
- Android Studio 3.5 beta2
- Navigation 2.1.0-alpha04
Nested Graph
Navigationは入れ子にすることが可能です。例としては以下の感じです。navigation
タグの中に、更に navigation
タグを入れることができます。
(XMLは省略してる部分があります。)
Designで見るとこんな感じです。
Nested Graphに引数を渡す
先程の例でfirstからNested Graph内にあるsecondに引数を渡す方法です。
素直にやろうとすると、XMLはこんな感じになります。
このとき、SafeArgsが生成するコードを使うと次のようになります。
この生成されたコードでは引数を渡すことができません。
これを解決するには、以下のようにNested Graph直下に argument
を指定してあげます。
このとき生成するコードでは、引数を渡すことが可能になります。
includeの場合
先程は同じnavigationファイルでしたが、 include
タグを使って別のnavigationファイルを参照することができます。
この場合に引数を渡したい場合は、別の方法が必要になります。
includeを使った場合は、 action
タグ内に argument
を追加します。
これで、引数を渡すコードが生成されるようになります。
正直、あまり良い解決方法ではないのですが、現状ではSafeArgsのコード生成がそこまで考慮されていない感じです。
一応バグレポートは出てるのですが、大きく変更が必要な感じがするので、結構厳しい気がします。