【问题标题】:How to navigate from preference screen to a fragment?如何从首选项屏幕导航到片段?
【发布时间】:2021-01-06 04:57:34
【问题描述】:

我正在构建一个应用程序,其中有一个我使用 Andreoid Jetpack Preference 库构建的设置屏幕。我想从首选项屏幕进入更详细的片段,以便个性化电子邮件。但是我不知道如何处理对首选项的点击,我已经设法导入了从库中提供的方法,但我不知道如何实现它,因为没有可用的信息。我有 onPreferenceClick 函数,但我不知道如何构建它的逻辑。未点击时返回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
}

【问题讨论】:

    标签: android kotlin android-preferences android-jetpack


    【解决方案1】:

    如果你使用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;
                        }
                    });
    
        }
    

    【讨论】:

      【解决方案2】:

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

      val showValueListener = Preference.OnPreferenceClickListener {
              findNavController().navigate(R.id.editMailFragment)
              true
          }
      findPreference<Preference>("email")?.onPreferenceClickListener = showValueListener
      

      【讨论】:

      • 请解释为什么我的回答不对?我的答案与你对 java 代码的答案相同。
      • 因为我要求使用 kotlin 和 android jetpack 的解决方案,而不是 java。
      猜你喜欢
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多