美文网首页
偏好设置

偏好设置

作者: acc8226 | 来源:发表于2017-03-10 11:16 被阅读22次

设置可接受的范围

要将可接受的值限制在 0(不包括)和 3(包括)之间,我们选择使用 PreferenceChangeListener - 它与 SharedPreferenceChangeListener 的不同之处为:

  • SharedPreferenceChangeListener 在任何值保存到 SharedPreferences 文件后被触发。
  • PreferenceChangeListener 在值保存到 SharedPreferences 文件前被触发。因此,可以防止对偏好设置做出无效的更新。PreferenceChangeListeners 也附加到了单个偏好设置上。

流程通常如下所示:

  1. 用户更新偏好设置。
  2. 该偏好设置触发了 PreferenceChangeListener。
  3. 新的值保存到了 SharedPreference 文件。
  4. onSharedPreferenceChanged 监听器被触发。

除此之外,它们的行为很相似。你将在你的 Activity中实现Preference.OnPreferenceChangeListener,覆盖onPreferenceChange(Preference preference, Object newValue)。 onPreferenceChange 方法将返回 true 或 false,取决于偏好设置实际上是否要被保存。

若要妥善管理 Activity 生命周期,我们建议您在 onResume()onPause() 回调期间分别注册和注销SharedPreferences.OnSharedPreferenceChangeListener

偏好设置的回调通用代码:

// Override onSharedPreferenceChanged to update non CheckBoxPreferences when they are changed
    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        Preference preference = findPreference(key);
        if (null != preference) {
            if (!(preference instanceof CheckBoxPreference)) {
                setPreferenceSummary(preference, sharedPreferences.getString(key, ""));
            }
        }
    }

 // Create a method called setPreferenceSummary that accepts a Preference and an Object and sets the summary of the preference
    private void setPreferenceSummary(Preference preference, Object value) {
        String stringValue = value.toString();
        String key = preference.getKey();

        if (preference instanceof ListPreference) {
            /* For list preferences, look up the correct display value in */
            /* the preference's 'entries' list (since they have separate labels/values). */
            ListPreference listPreference = (ListPreference) preference;
            int prefIndex = listPreference.findIndexOfValue(stringValue);
            if (prefIndex >= 0) {
                preference.setSummary(listPreference.getEntries()[prefIndex]);
            }
        } else {
            // For other preferences, set the summary to the value's simple string representation.
            preference.setSummary(stringValue);
        }
    }

相关文章

  • 偏好设置

    设置可接受的范围 要将可接受的值限制在 0(不包括)和 3(包括)之间,我们选择使用 PreferenceChan...

  • 偏好设置

    很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好...

  • 偏好设置

    - (IBAction)save {// 1.利用NSUserDefaults,就能直接访问软件的偏好设置(Lib...

  • Airpod连接Macbook音质变差或者有噪音??看这里

    偏好设置-声音 设置如下

  • mac终端名称去掉deMacBook-Pro

    名称设置在系统偏好设置->用户于群组 终端名称去掉deMacBook在系统偏好设置->共享里面

  • NSUserDefaults-和-plist文件

    preference(偏好设置) 偏好设置是专门用来保存应用程序的配置信息的,一般不要在偏好设置中保存其他数据。 ...

  • 搜狗输入法打出「直角引号」

    偏好设置 > 高级 > 符号替换设置

  • iOS 偏好设置

    一、NSUserDefaults 的用法,主要是保存和读取数据 用途:主要用来存储用户系统的设备信息,但有的时候也...

  • LibGDX偏好设置

    来自Preferences的译文 偏好设置是存储应用程序小数据的简单有效的方法,例如用户设置、游戏状态保存等,偏好...

  • NSUserDefaults(偏好设置)

    用户轻量级的数据持久化,主要用于保存用户程序的配置等信息,以便下次启动程序后能恢复上次的设置。 每个应用都有一个N...

网友评论

      本文标题:偏好设置

      本文链接:https://www.haomeiwen.com/subject/qvungttx.html