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

Android 检查并更新PreferenceActivity中的首选项值,android,preferenceactivity,android-sharedpreferences,Android,Preferenceactivity,Android Sharedpreferences,各位开发人员, 我正在从事一个android项目,因为需要将用户名存储在共享首选项中。当用户试图在应用程序设置中更新他/她的名字时,我会使用EditTextPreference作为首选项,我会实现onPreferenceChangeListner来获取更新的值,并对更新的值进行一些验证 这是我的列表 @Override public boolean onPreferenceChange(Preference preference, Object object) { String valu

各位开发人员, 我正在从事一个android项目,因为需要将用户名存储在共享首选项中。当用户试图在应用程序设置中更新他/她的名字时,我会使用EditTextPreference作为首选项,我会实现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;
}
在这个listner中,我试图完成的是修剪用户输入的内容,之后如果字符串变为空,则删除首选项值so并更新首选项 如果没有,则更新首选项中的修剪值,
但问题是,在用户输入值后,在修剪后,共享首选项中的值不会更新。(在函数的第二部分)

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