如何从首选项屏幕导航到片段?
How to navigate from preference screen to a fragment?
我正在构建一个应用程序,其中有一个我使用 Andreoid Jetpack Preference 库构建的设置屏幕。我想从首选项屏幕进入更详细的片段,以便个性化电子邮件。但是我不知道如何处理首选项上的点击,我已经设法导入了库中提供的方法,但由于没有可用信息,我不知道如何实现它。我有 onPreferenceClick 函数,但我不知道如何构建它的逻辑。未单击时应 return 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
}
如果您使用 PreferenceFragmentCompat
,您可以覆盖 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
我正在构建一个应用程序,其中有一个我使用 Andreoid Jetpack Preference 库构建的设置屏幕。我想从首选项屏幕进入更详细的片段,以便个性化电子邮件。但是我不知道如何处理首选项上的点击,我已经设法导入了库中提供的方法,但由于没有可用信息,我不知道如何实现它。我有 onPreferenceClick 函数,但我不知道如何构建它的逻辑。未单击时应 return 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
}
如果您使用 PreferenceFragmentCompat
,您可以覆盖 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