とりあえずメモ
設定.xmlのPreferenceタグにFragmentを指定すると別なPreferenceFragmentを起動できるが、Navigationを使用している場合うまく動作しない。タップした瞬間に落ちる。
ちゃんと確認していないが、Navigationと複数画面のPreferenceの食べ合わせは非推奨らしい。
そこで、Navigationの機能で複数画面のPreferenceを実装する。
手順
- 設定.xmlをメイン設定.xmlと子設定.xmlに分割する。
- 設定子画面(PreferenceFragment)を作成する。
- 設定子画面をNavigation Graphに追加する。IDとラベルを設定する。
- 設定親画面(PreferenceFragment)に子画面への遷移ボタンを設ける。たとえばOptionMenuにメニューを追加する。
- ボタンの処理で、Navigationによって設定子画面へ遷移する。
Navigation.findNavController(requireActivity(), R.id.nav_host_fragment).navigate(R.id.nav_setting_sub1);