SharedPreferences清除/保存

时间:2013-03-18 11:10:16

标签: android android-activity sharedpreferences

我试图制作一个检查器,我想将值保存到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
        }

问题

但是当我测试时,我看到它没有清除偏好。我做错了什么还是?

5 个答案:

答案 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();