2012-04-29 65 views
4

編輯:此代碼實際工作。我在使用它的代碼中遇到問題。無論如何,任何人都會發現它很有用。如何讀取/寫入布爾首選項

我有一個類有兩種方法來編寫和讀取布爾持久偏好。但是,如果我寫一個新值然後嘗試讀取它,我仍然會獲得舊值。只有當我殺了應用程序並重新啓動它時,我纔會獲得新的價值。任何想法是什麼問題?

Context mContext; 

.... 
public void writeFlag(boolean flag) { 
     SharedPreferences sharedPreferences = PreferenceManager 
       .getDefaultSharedPreferences(mContext); 
     Editor editor = sharedPreferences.edit(); 
     editor.putBoolean("mykey", flag); 
     editor.commit(); 
} 

public boolean readFlag() { 
     SharedPreferences sharedPreferences = 
       PreferenceManager.getDefaultSharedPreferences(mContext); 
     return sharedPreferences.getBoolean("mykey", false); 
} 
+0

當你殺死的應用或清除其數據的所有prefrence值設置爲默認值 – 2016-03-20 07:37:23

回答

4
public static boolean getBooleanFromSP(String key) { 
// TODO Auto-generated method stub 
    SharedPreferences preferences = getApplicationContext().getSharedPreferences(" SHARED_PREFERENCES_NAME ", android.content.Context.MODE_PRIVATE); 
    return preferences.getBoolean(key, false); 
}//getPWDFromSP() 


public static void saveBooleanInSP(String key, boolean value){ 
    SharedPreferences preferences = getApplicationContext().getSharedPreferences(" SHARED_PREFERENCES_NAME ", android.content.Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor =  preferences.edit(); 
    editor.putBoolean(key, value); 
    editor.commit(); 
}//savePWDInSP() 
+0

比較你和我的代碼中找到區別 – 2012-04-29 04:31:30

0
public static boolean getBooleanFromSP(String key) { 
// TODO Auto-generated method stub 
SharedPreferences preferences = 
getApplicationContext().getSharedPreferences(" SHARED_PREFERENCES_NAME ", 
    android.content.Context.MODE_PRIVATE); 
return preferences.getBoolean(key, false); 
    }//getPWDFromSP() 


public static void saveBooleanInSP(String key, boolean value){ 
SharedPreferences preferences = getApplicationContext().getSharedPreferences(" SHARED_PREFERENCES_NAME ", android.content.Context.MODE_PRIVATE); 
SharedPreferences.Editor editor =  preferences.edit(); 
editor.putBoolean(key, value); 
editor.commit(); 
}//savePWDInSP() 
0
public class SharePref { 
private static final String TAG = SharePref.class.getSimpleName(); 
private static SharePref mThis; 
private Context mContext; 
private SharedPreferences mPreference; 

private SharePref() { 

} 

public static void init(Context context) { 
    if (mThis == null) { 
     mThis = new SharePref(); 
     mThis.setData(context); 
    } 
} 

private void setData(Context context) { 
    mThis.mContext = context; 
    mPreference = mContext.getSharedPreferences(TAG, Context.MODE_PRIVATE); 
} 

public static SharePref getInstance() { 
    return mThis; 
} 

public void writeString(String tag, String data) { 
    SharedPreferences.Editor editor = mPreference.edit(); 
    editor.putString(tag, data).apply(); 
} 

public String readString(String tag) { 
    if (mPreference == null) 
     mPreference = mContext.getSharedPreferences(TAG, Context.MODE_PRIVATE); 
    return mPreference.getString(tag, null); 
} 

public void writeBoolean(String tag, boolean data) { 
    SharedPreferences.Editor editor = mPreference.edit(); 
    editor.putBoolean(tag, data).apply(); 
} 

public boolean readBoolean(String tag) { 
    return mPreference.getBoolean(tag, false); 
} 


public void clear(String tag) { 
    mPreference.edit().remove(tag).apply(); 
} 


}                    

//在活動

SharePref.init(this);  
SharePref.getInstance().writeString("key","value");