代码之家  ›  专栏  ›  技术社区  ›  Syed Naeem

检查并更新PreferenceActivity中的首选项值

  •  0
  • Syed Naeem  · 技术社区  · 6 年前

    向我的开发者们表示问候, 我正在做一个Android项目,需要在共享首选项中存储用户名。当用户试图在应用程序设置中更新自己的姓名时,请进行一些验证。我正在为此首选项使用EdittexPreference,并且正在实现OnPreferenceChangeListner以获取更新的值并对更新的值进行验证。 这是我的名单

    @Override
    public boolean onPreferenceChange(Preference preference, Object object) {
        String value = object.toString().trim();
        preference.setSummary(value);
        if (value.isEmpty()) { // this block works as expected
            preference.getEditor().clear().apply();
            Log.i("pref_old", preference.getExtras().getString("key", "-- old value cleared --")); // this always shows old value cleared - as expected
            return false;
        }
    
    
        preference.getEditor().putString("key", value).apply(); // this doesn't seems to be updating the value
        Log.i("pref_new", preference.getExtras().getString("key", "-- new value not created --")); // this always show "new value not created", but it should show updated value
        return true;
    }
    

    在这个列表中,我试图完成的是修剪用户输入的内容,之后,如果字符串变为空,则删除首选项值,然后更新首选项。 如果没有,则更新首选项中的修剪值, 但问题是,用户输入这些值后,修剪后的值不会在共享首选项中更新。(在函数的第二部分)

    1 回复  |  直到 6 年前
        1
  •  0
  •   Syed Naeem    6 年前

    如果要更改onPreferenceChange中的首选项值并手动更新首选项值,则似乎我们需要始终返回false。 我仍然不明白为什么当我试图记录新值时,在优先获取值之后,它不会显示更新的值,但是在其他调用相同值的活动中,我可以去那里确认值是否已更改。 但我的问题的解决方案是始终返回false并手动更新首选值。