向我的开发者们表示问候,
我正在做一个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;
}
在这个列表中,我试图完成的是修剪用户输入的内容,之后,如果字符串变为空,则删除首选项值,然后更新首选项。
如果没有,则更新首选项中的修剪值,
但问题是,用户输入这些值后,修剪后的值不会在共享首选项中更新。(在函数的第二部分)