概要:
DroidKaigi2020(開催中止)で発表予定だったNavigation Componentについての資料をアップロードします。Navigationを実践導入するのを躊躇っている方やどう導入すればわからない方に向けてまとめたのでよければ参考にしてください。
説明:
Android Architecture ComponentsのNavigation Componentは、Fragment間の遷移をよりシンプルに実装できるようにしたライブラリです。
既存のFragment遷移処理はFragmentManagerによるトランザクション処理を、バックスタックなども考慮しながらコード上で書いていました。Navigationはそれらのトランザクション処理をラップしているので、利用することでコードの簡略化が可能となります。それだけでなく、NavigationGraphと呼ばれるxmlによってFragmentの遷移図をグラフィカルに作成/表示することにより、画面遷移をよりわかりやすく実装することができる画期的なコンポーネントです。argumentsの型安全化(Safe Args)、ディープリンクによる遷移などの便利な機能も含まれています。
本セッションでは、スタディプラスアプリにおいてNavigation導入を行なった際に得られた知見と、それを基にプロジェクトに導入する際に考慮したいことなどを紹介します。また、内部実装をもとに、実際に内部でNavigationが行なっていることも紹介したいと思っております。本セッションが開発者の方々のNavigation導入のきっかけになれば幸いです。
内容としては以下のようなものを予定しております。
- 基本的な遷移の実装について
- NavHostFragmentとFragmentContainerView
- Fragmentの遷移とNavigator
- DialogFragment/BottomSheetDialogFragmentの遷移とNavigator
- BottomNavigationの連携
- ディープリンクに依る遷移
- NavigationGraphのネスト
- 遷移アニメーションの指定と注意点
- Fragment間のデータ受け渡しについて
- Safe Args機能
- ActivityViewModel、NavGraphViewModelに依るデータ受け渡し
- Safe ArgsとNavGraphViewModelの併用時の注意点
- バックキー制御方法について
- Fragment単位で制御する
- Activity全体で制御する
- 最初に表示されるFragmentの制御について
- NavigationGraphごと分ける
- NavigationGraphはそのままで開始Fragmentだけ変更する
- 利用する上で起こりうるクラッシュの原因と対応方法について
- CustomNavigatorの作成について
- 導入時の設計パターンについて
- アプリ全体を1Activityにまとめる場合
- 1機能ごとに1Activityにまとめる場合