SharedPreferences清除/保存

Tir*_*lel 23 android sharedpreferences android-activity

我试图制作一个检查器,我想将值保存到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();
Run Code Online (Sandbox Code Playgroud)

并清除另一项活动的优先顺序是:

     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
        }
Run Code Online (Sandbox Code Playgroud)

问题

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

Awa*_*Kab 79

要清除SharedPreferences,请使用此选项

SharedPreferences preferences = getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear(); 
editor.commit();
Run Code Online (Sandbox Code Playgroud)

希望这能帮到你.

  • 不.此代码将清除所有SharedPreferences. (2认同)

Dav*_*son 6

您没有使用相同的首选项.花一点时间阅读http://developer.android.com/reference/android/app/Activity.html

在您使用的第一个活动中:

SharedPreferences prefs = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)

在其他活动清算中,您只使用:

SharedPreferences preferences = getPreferences(0);
Run Code Online (Sandbox Code Playgroud)

阅读文档:

检索SharedPreferences对象以访问此活动专用的首选项.这只是通过传入此活动的类名作为首选项名称来调用底层的getSharedPreferences(String,int)方法.

您需要在两个活动中使用相同的首选项名称.因此,在您的第二项活动中,您只需使用清算

SharedPreferences preferences = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)