我试图制作一个检查器,我想将值保存到SharedPreferences中。但我不确定它是否有效
我这样做的目的是保存价值:*
SharedPreferences prefs = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
boolean firstrun = prefs.getBoolean("firstrun", true);
db = openOrCreateDatabase("value.db", Context.MODE_PRIVATE, null); // optional CursorFactory
if (firstrun) {
SharedPreferences.Editor editor = prefs.edit();
db.execSQL("CREATE TABLE startValue (ID Integer Primary Key, myValue Integer)");
db.execSQL("INSERT INTO startValue (myValue) VALUES (2)");
editor.putBoolean("firstrun", false);
editor.apply();
}
// Save the state
getSharedPreferences("PREFERENCE", MODE_PRIVATE)
.edit()
.putBoolean("firstrun", false)
.commit();
清除其他活动的偏好是:
try{
db = openOrCreateDatabase("value.db", Context.MODE_PRIVATE, null); // optional CursorFactory
db.execSQL("DROP TABLE IF EXISTS startValue");
db.close();
SharedPreferences preferences = getPreferences(0);
SharedPreferences.Editor editor = preferences.edit();
editor.remove("firstrun");
editor.clear();
editor.commit();
this.finish();
}
catch(SQLException ex)
{
//catch error here
}
问题
但是当我测试时,我看到它没有清除偏好。我做错了什么还是?
答案 0 :(得分:77)
要清除SharedPreferences,请使用此
SharedPreferences preferences = getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();
希望这有助于你。
答案 1 :(得分:6)
您没有使用相同的偏好设置。请花点时间阅读http://developer.android.com/reference/android/app/Activity.html
在您使用的第一个活动中:
SharedPreferences prefs = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
在其他活动清算中,您只使用:
SharedPreferences preferences = getPreferences(0);
阅读文档:
检索SharedPreferences对象以访问此活动专用的首选项。这只是通过传入此活动的类名作为首选项名称来调用底层的getSharedPreferences(String,int)方法。
您需要在两个活动中使用相同的首选项名称。因此,在您的第二个活动中,您只需使用
进行清算SharedPreferences preferences = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
答案 2 :(得分:3)
//将字符串保存到SharedPreferences
public static void saveStringToSharedPreferences(Context mContext, String key, String value) {
if(mContext != null) {
SharedPreferences mSharedPreferences = mContext.getSharedPreferences("SHARED_PREFERENCES", 0);
if(mSharedPreferences != null)
mSharedPreferences.edit().putString(key, value).commit();
}
}
//从SharedPreferences中读取字符串
public static String readStringFromSharedPreferences(Context mContext, String key) {
if(mContext != null) {
SharedPreferences mSharedPreferences = mContext.getSharedPreferences("SHARED_PREFERENCES", 0);
if(mSharedPreferences != null)
return mSharedPreferences.getString(key, null);
}
return null;
}
//从SharedPreferences中删除
public static void removeFromSharedPreferences(Context mContext, String key) {
if (mContext != null) {
SharedPreferences mSharedPreferences = mContext.getSharedPreferences(Constants.SHARED_PREFERENCES_NAME, 0);
if (mSharedPreferences != null)
mSharedPreferences.edit().remove(key).commit();
}
}
答案 3 :(得分:1)
您可以:
getSharedPreferences("PREFERENCE", 0).edit().clear().commit();
答案 4 :(得分:1)
删除所有偏好设置:
SharedPreferences mPrefs_delete = context.getSharedPreferences(GeneralFunctions.SETTING_SINGLE_MASTER_CHILD, Context.MODE_PRIVATE);
haredPreferences.Editor editor_delete = mPrefs_delete.edit();
editor_delete.clear().commit();