0

我有PreferenceFragment一些偏好。我的目标是确保用户填写此屏幕上的所有值(如果他们没有填写,他们可以离开,但如果您填写一个,则需要全部填写)

我的第一个想法是我可以处理onBackPressed和检查 pref1、pref2、pref3,但事实证明 PreferenceFragments 不会引发事件onBackPressed,甚至不会引发onKeyDown事件。

可以在主 Activity 中处理它,但是我从同一个 Activity 加载了几个这样的首选项片段,所以如果我可以在首选项片段本身中处理每个片段的逻辑是理想的。

如果有更好的方法来实现这一点,请解释。

4

1 回答 1

0

是的,您可以在Fragment中处理这一切。

我将笼统地说,因为您似乎不是新手开发人员。

  1. 在您的活动的任何方法中提供对片段实例的回调,表明用户希望PreferenceFragment像这样解雇您:

    // The callback returns true if the user is allowed to exit the
    // preference screen and false otherwise
    // The PrefenceFragment will have to implement this interface/callback
    
    @Override
    public void onBackPressed() {
        if (mBackPressedCallback.onBackPressed)
            super.onBackPressed()
        ; else
            Toast.makeText("Fill in required prefence", Toast.LENGTH_SHORT).show
            OR
            SnackBar.makeText(...).show
        ;
    }
    
  2. 在与您的首选项文件关联的OnSharedPrefenceChangeListener上添加一个。SharedPrefences在此处查看如何操作。

  3. 创建一个布尔数组(或使用其他数据结构)来确定用户何时满意地更改了感兴趣的偏好

  4. 收到onBackPressed回调时,检查数组/数据结构是否被满意地检查,如果是则返回true,如果不是则返回false

于 2015-06-27T16:32:54.923 回答