このストーリーは、ナビゲーションコンポーネントをまだ認識していない人を対象としています。ここでは、ライブラリの主要な要素を調べて、すべてがどのように見えるかを確認します。
これで、マルチモジュールプロジェクトのナビゲーションコンポーネントに関する大きな記事の最初の部分になりました。すでに基本に精通している場合は、次の部分に進むことをお勧めします。
TL; DR 。:
ナビゲーションコンポーネントを使用してアプリケーションでナビゲーションを整理するには、次のものが必要です。
グラフを作成します。
それに画面を追加します。
それらの間に遷移を追加します。
必要に応じてネストされたグラフを追加します。
このすべての混乱をNavHostに置きます。
コード内の遷移を示します。
基本的なナビゲーションコンポーネント
1.ナビゲーショングラフは、ナビゲーションの基本単位です。これは、頂点が画面であり、エッジがそれらの間の遷移であるグラフです。グラフは、res / navigationフォルダー内の別のxmlファイルに作成されます。navControllerを誤解させないために、グラフで開始点を指定する必要があります(startDestination)
2.宛先は、グラフ上のUIユニットを表します(フラグメント/アクティビティ/ダイアログ/ NestedGraph)。
3. Action destination- . ( ), ( , ).
4. Nested Graph — . , <include>.
5. NavHost — , . , NavHostFragment, . :
<androidx.fragment.app.FragmentContainerView
android:id="@+id/navHost"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_main" />
6. NavController — , . . NavController — , , , , , shared- .
画面間の遷移
画面間の遷移は、アクションまたはディープリンクを介して実行できます。
アクションを伴う移行
それはどのようなものか:
<action
android:id=”@+id/action_to_user_details”
app:destination=”@id/userDetailsFragment”
app:enterAnim=”@anim/add_fragment_animation”
app:exitAnim=”@anim/pop_fragment_animation”
app:popEnterAnim=”@anim/pop_enter_animation”
app:popExitAnim=”@anim/pop_exit_animation”>
トランジションの呼び出し:
navController.navigate( R.id.action_to_user_details, Bundle().apply {putString(USER_ID, userId)} )
「もう一方の端」で議論を得る:
private val userID by lazy {
arguments!![USER_ID]
}
ディープリンクでナビゲートする
それはどのようなものか:
<deepLink
app:uri=”app://customUri?parameter={parameterName}”
/>
トランジションの呼び出し:
navController.navigate(
Uri.parse(“app://customUri?parameter=$reason”)
)
「もう一方の端」で議論を得る:
private val refundId by lazy {
arguments?.getString(“parameter”, null)
}
それで全部です!シンプルでわかりやすい-これがナビゲーションコンポーネントが勝つものです。今すぐにダイブしましょう安全Argsのは作品をプラグインする方法とそれがないとまで降りSafeArgsのマルチモジュールプロジェクトでのナビゲーションコンポーネントと連携し、iOSのようなmultistackナビゲーション。