Android 如何从首选项屏幕导航到片段?

Android 如何从首选项屏幕导航到片段?,android,kotlin,android-preferences,android-jetpack,Android,Kotlin,Android Preferences,Android Jetpack,我正在构建一个应用程序,其中有一个设置屏幕,我使用Android Jetpack首选项库构建该屏幕。我想从首选项屏幕进入更详细的片段,以便个性化电子邮件。但是我不知道如何处理单击首选项,我已经成功地从库中导入了提供的方法,但是我不知道如何实现它,因为没有可用的信息。我有PreferenceClick的功能,但我不知道如何构建它的逻辑。未单击时返回false,单击时返回true override fun onActivityCreated(savedInstanceState: Bundl

我正在构建一个应用程序,其中有一个设置屏幕,我使用Android Jetpack首选项库构建该屏幕。我想从首选项屏幕进入更详细的片段,以便个性化电子邮件。但是我不知道如何处理单击首选项,我已经成功地从库中导入了提供的方法,但是我不知道如何实现它,因为没有可用的信息。我有PreferenceClick的功能,但我不知道如何构建它的逻辑。未单击时返回false,单击时返回true

    override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)

    if (onPreferenceClick(preferenceScreen.getPreference(1))) {
        findNavController().navigate(R.id.editMailFragment)
    }

    override fun onPreferenceClick(preference: Preference?): Boolean {
    preference?.setOnPreferenceClickListener {

        }
    }
    return
}

如果您使用
首选项FragmentCompat
,您可以覆盖
onCreatePreferences
来处理单击首选项:

    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {

        addPreferencesFromResource(R.xml.your_preference);

        Preference preferenceMap = findPreference("your_preference_key");

        preferenceMap.setOnPreferenceClickListener(
                new Preference.OnPreferenceClickListener() {
                    @Override
                    public boolean onPreferenceClick(Preference arg0) {
                        findNavController().navigate(R.id.editMailFragment)
                        return true;
                    }
                });

    }

我已经解决了,如果有人有同样的问题,这里是代码

val showValueListener = Preference.OnPreferenceClickListener {
        findNavController().navigate(R.id.editMailFragment)
        true
    }
findPreference<Preference>("email")?.onPreferenceClickListener = showValueListener
val showValueListener=Preference.on首选项单击Listener{
findNavController().navigate(R.id.editMailFragment)
真的
}
FindReference(“电子邮件”)?.On首选项ClickListener=showValueListener

请解释为什么我的答案不对?我的答案和你的答案是一样的,因为我要求的是使用kotlin和android jetpack的解决方案,而不是java。