Navigation Componentを利用します
Note
Required(先に完了させましょう)
課題内容
Navigation Component
これまで画面遷移(Fragmentのトランザクション)はFragmentManagerを直接利用していました。Naviigationを利用するとより効率的に安全にFragmenの画面遷移を実装できます。
NavGraphの定義により宣言的に画面遷移を扱える
遷移先にデータを安全に渡せる
SafeArgs
Navigationにおいてデスティネーション(遷移先のFragment)には引数を設定することができます。この引数を型安全に扱うためのGradleプラグインがSafeArgsです。プラグインのセットアップ方法は公式ドキュメントを参照してください。
例えば、次のようなデスティネーションにString型の引数を定義すると、
<fragment
android : id =" @+id/myFragment"
android : name =" jp.co.yumemi.droidtraining.ui.MyFragment"
android : label =" Forecast" >
<argument
android : name =" key"
app : argType =" string" />
</fragment >
MyFragmentをデスティネーションとするactionにはString型の引数が必要になります
val action = SomeFragmentDirections .someAction(" value" )
受け取るFragment側ではnavArgsで引数を取得できます。
// MyFragmentArgsはプラグインが自動生成した引数の型です
val args: MyFragmentArgs by navArgs()
val key: String = args.key
val viewModel: MyViewModel by viewModels()
ViewModelで引数を受け取ることもできます。
@HiltViewModel
class MyViewModel @Inject constructor(
savedStateHandle : SavedStateHandle ,
) : ViewModel() {
private val args by lazy {
MyFragmentArgs .fromSavedStateHandle(savedStateHandle)
}
}
参考資料
Navigation Componentを利用します
Note
Required(先に完了させましょう)
課題内容
Navigation Component
これまで画面遷移(Fragmentのトランザクション)はFragmentManagerを直接利用していました。Naviigationを利用するとより効率的に安全にFragmenの画面遷移を実装できます。
SafeArgs
Navigationにおいてデスティネーション(遷移先のFragment)には引数を設定することができます。この引数を型安全に扱うためのGradleプラグインがSafeArgsです。プラグインのセットアップ方法は公式ドキュメントを参照してください。
例えば、次のようなデスティネーションにString型の引数を定義すると、
MyFragmentをデスティネーションとするactionにはString型の引数が必要になります受け取るFragment側では
navArgsで引数を取得できます。ViewModelで引数を受け取ることもできます。
参考資料