365連休

にわかのandroidとかの開発メモ。

Android Studio 3.6 Navigationで複数画面のPreferenceFragmentを使用する方法

とりあえずメモ

 

設定.xmlのPreferenceタグにFragmentを指定すると別なPreferenceFragmentを起動できるが、Navigationを使用している場合うまく動作しない。タップした瞬間に落ちる。

ちゃんと確認していないが、Navigationと複数画面のPreferenceの食べ合わせは非推奨らしい。

 

そこで、Navigationの機能で複数画面のPreferenceを実装する。

 

手順

  1. 設定.xmlをメイン設定.xmlと子設定.xmlに分割する。
  2. 設定子画面(PreferenceFragment)を作成する。
  3. 設定子画面をNavigation Graphに追加する。IDとラベルを設定する。
  4. 設定親画面(PreferenceFragment)に子画面への遷移ボタンを設ける。たとえばOptionMenuにメニューを追加する。
  5. ボタンの処理で、Navigationによって設定子画面へ遷移する。
    Navigation.findNavController(requireActivity(), R.id.nav_host_fragment).navigate(R.id.nav_setting_sub1);