我在这里有点困惑。我正在尝试更改EditTextPreference的值,但它未在视图中更新。 (这是在PreferenceActivity中)
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.modify_instrument_preferences);
// Set default values
SharedPreferences customSharedPreference = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = customSharedPreference.edit();
modifying = getObjectWithName(); //Some object with a name;
editor.putString("namePref", modifying.getName());
editor.commit();
android.util.Log.d("TEST", "written: "+customSharedPreference.getString("namePref",""));
}
我的printlns打印出有效信息,commit()返回true,但是在单击EditTextPreference时,它会显示旧值。如果我旋转屏幕,导致onCreate再次运行,则EditTextPreference具有正确的值。
如此令人困惑。为什么不在UI中更新此更改?
编辑:
我不确定为什么以上不起作用,但我只是通过这样做来设法改变它:
EditTextPreference namePref = (EditTextPreference) findPreference("namePref");
namePref.setText("the text");
每次更新视图。
答案 0 :(得分:0)
虽然我知道PreferenceActivities有一些构造可以自己跟踪这些信息,但似乎没有很好的记录。我发现在首选项中添加onPreferenceChangeListener
可让您在更改首选项后立即进行编辑。