我当前正在将应用程序迁移到androidX和新的导航组件。我的应用程序具有彼此嵌套的不同设置屏幕。在androidX之前,PreferenceScreen
是彼此嵌套的。现在,它的处理方式为:
<Preference
app:fragment="com.example.SyncFragment"
.../>
因此,在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
}
有什么办法可以给我通过此回调获得的pref
引用一个ID,以便我可以使用NavControler
处理片段事务?还是我在这里使事情复杂化而错过了什么?