web-dev-qa-db-ja.com

SharedPreferencesクリア/保存

Iamはチェッカーを作成しようとしていますが、値を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
        }

問題

しかし、私がテストしているときに、設定をクリアしていないことがわかります。私は何か間違ったことをしていますか?

22
Tirolel

SharedPreferencesをクリアするには、これを使用します

SharedPreferences preferences = getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear(); 
editor.commit();

これがお役に立てば幸いです。

78
AwadKab

同じ設定を使用していません。しばらくお読みください http://developer.Android.com/reference/Android/app/Activity.html

最初のアクティビティで使用しているもの:

SharedPreferences prefs = getSharedPreferences("PREFERENCE", MODE_PRIVATE);

また、他のアクティビティのクリアでは、次のもののみを使用しています。

SharedPreferences preferences = getPreferences(0);

ドキュメントを読む:

このアクティビティ専用の設定にアクセスするためのSharedPreferencesオブジェクトを取得します。これは、このアクティビティのクラス名を設定名として渡すことにより、基礎となるgetSharedPreferences(String、int)メソッドを呼び出すだけです。

両方のアクティビティで同じ設定名を使用する必要があります。したがって、2番目のアクティビティでは、清算を行うだけで

SharedPreferences preferences = getSharedPreferences("PREFERENCE", MODE_PRIVATE);
6
David Olsson

// 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
Janoub

簡単にできること:

getSharedPreferences("PREFERENCE", 0).edit().clear().commit();
1
Khalid Taha

すべての設定を削除するには:

SharedPreferences mPrefs_delete = context.getSharedPreferences(GeneralFunctions.SETTING_SINGLE_MASTER_CHILD, Context.MODE_PRIVATE);
SharedPreferences.Editor editor_delete = mPrefs_delete.edit();
editor_delete.clear().commit();
1
selim.aksoy