我有一个使用 SharedPreferences 来跟踪用户集合的应用程序。但我一直在抱怨他们使用复选框输入他们的项目,当他们重新启动应用程序时,他们的集合显示为空。
这是复选框的代码
SharedPreferences data;
data = getSharedPreferences(filename, 0);
checkbox = (CheckBox) findViewById(R.id.checkbox);
checkbox.setOnCheckedChangeListener(this);
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
switch (buttonView.getId()) {
case R.id.checkbox:
bHave = checkbox.isChecked();
if (bHave == true) {
SharedPreferences.Editor e = data.edit();
e.putBoolean(have, bHave);
e.commit();
} else {
SharedPreferences.Editor e = data.edit();
e.putBoolean(have, bHave);
e.commit();
}
break;
}
}
一旦选中该框,它就会写入 SharedPreferences,因此我知道数据已保存。
这是填充复选框的代码
private void myGetChecked() {
// TODO Auto-generated method stub
bHave = data.getBoolean(have, false);
if (bHave == true) {
checkbox.setChecked(true);
}
}
哪个应该从 SharedPreferences 获取数据。
几点...
- 它适用于我必须测试的两台移动设备,一台 Droid X2 和一台 LG Spectrum 2。
- 有人提到它无法正常工作,LG Optimus G、DROID RAZR HD、Desire HD 和 Trac-Phone SGH-S959G。
- 没有错误被抛出,所以我不能发布 LogCat。
- 我已经仔细检查并确保键和变量中的所有名称都匹配。
- 我对整个应用程序使用相同的首选项文件,但它的编码方式一次只有一个活动读取/写入文件。
有人知道为什么有些用户会删除他们的数据吗?如果您需要更多信息,请告诉我。