结合使用NavController和首选项

Cil*_*nco 7 android android-navigation androidx

我目前正在将应用程序迁移到androidX和新的导航组件。我的应用程序具有彼此嵌套的不同设置屏幕。在androidX之前,PreferenceScreen它们彼此嵌套。现在,这被处理为:

<Preference
    app:fragment="com.example.SyncFragment"
    .../>
Run Code Online (Sandbox Code Playgroud)

因此,在XML中,我们PreferenceFragmentCompat通过单击该首选项为要显示的类提供一个绝对的类名。片段事务必须由保存片段的Activity来实现。我很乐意这样做,NavControler但这是我的问题:

override fun onPreferenceStartFragment(caller: PreferenceFragmentCompat, pref: Preference): Boolean {
    val nav = Navigation.findNavController(this, R.id.nav_host_fragment)
    nav.navigate(<Fragment ID>) // Only int IDs can be passed here
    return true
}
Run Code Online (Sandbox Code Playgroud)

有什么办法可以给pref我通过此回调获得的引用ID,以便我可以使用来处理片段事务NavControler?还是我在这里使事情复杂化而错过了什么?