我有一个使用SharedPreferences跟踪Users项目集合的应用。但是我一直抱怨他们使用复选框输入他们的项目,当他们重新启动应用程序时,他们的收藏显示为空。
以下是复选框的代码
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获取数据。
几点......
任何人都知道为什么有些用户会删除他们的数据?如果您需要更多信息,请告诉我。
答案 0 :(得分:-1)
很酷,您可以在包中创建SharedPreferences类
import java.util.HashMap;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class SessionManager {
// Shared Preferences
SharedPreferences pref;
// Editor for Shared preferences
Editor editor;
// Context
Context _context;
// Shared pref mode
int PRIVATE_MODE = 0;
// Sharedpref file name
private static final String PREF_NAME = "stackoverflowreply";
// All Shared Preferences Keys
private static final String IS_CHEKD = "ischekd";
// Constructor
@SuppressLint("CommitPrefEdits")
public SessionManager(Context context) {
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
public void createchekdstatus(boolean ischekd) {
// Storing login value as TRUE
editor.putBoolean(IS_CHEKD, ischekd);
// commit changes
editor.commit();
}
public void unchekd() {
// Clearing all data from Shared Preferences
editor.clear();
editor.commit();
}
/**
* Quick check for login
* **/
public boolean getchekdstatus() {
return pref.getBoolean(IS_CHEKD, false);
}
}
然后您可以将数据存储在活动中
SessionManager session = new SessionManager(getApplicationContext());
session.createchekdstatus(true);
然后从SharedPreferences中查找任何ur活动
中的数据essionManager session = new SessionManager(getApplicationContext());
boolean chekboxstatus = session.getchekdstatus();
享受
答案 1 :(得分:-1)
在我向一些用户询问他们是否仍有问题之后,有人回复说它已修复。他们没有说明他们是否在更新前卸载了应用程序,或者他们是否清除了应用程序数据。
看起来这根本不是问题,这就是为什么我无法复制它。