どの画面からもMainFragmentに一気に戻りたい場合はどうすればいいでしょうか。
直接線を引っ張っても良いのですが、画面が増えた場合に遷移グラフが複雑になりそうです。
どこからでも利用する遷移はGlobal Action
として定義できます。
<navigation ... >
<action
android:id="@+id/action_global_go_main"
app:destination="@id/mainFragment"
app:popUpTo="@id/main_navigation"
app:popUpToInclusive="true"/>
</navigation>
action
の定義がfragment
の外にあり、文字通りグローバルに使用できるようになっています。乱用すると遷移グラフを定義した意味がなくなるので、ルート画面への強制遷移のような頻出パターンのみに限定して使うと良いかと思います。
この場合、バックスタックを消さないと
MainFragment -> NextFragment1 -> NextFragment2 -> MainFragment
のようなスタックになり、BackキーでMainFragmentからNextFragment2に戻れてしまいます。
popUpToInclusive="true"
の時、popUpTo
はバックスタックを全てpopする挙動になるため、これを指定しています。この際指定するIDはFragmentではなく、NavigationのIDになります。
0 件のコメント :
コメントを投稿