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
}
問題
しかし、私がテストしているときに、設定をクリアしていないことがわかります。私は何か間違ったことをしていますか?
SharedPreferencesをクリアするには、これを使用します
SharedPreferences preferences = getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();
これがお役に立てば幸いです。
同じ設定を使用していません。しばらくお読みください 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);
// 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();
}
}
簡単にできること:
getSharedPreferences("PREFERENCE", 0).edit().clear().commit();
すべての設定を削除するには:
SharedPreferences mPrefs_delete = context.getSharedPreferences(GeneralFunctions.SETTING_SINGLE_MASTER_CHILD, Context.MODE_PRIVATE);
SharedPreferences.Editor editor_delete = mPrefs_delete.edit();
editor_delete.clear().commit();