我在项目中使用了MODE_PRIVATE的SharedPreferences,当我从最近的活动列表中清除应用程序,然后再次打开应用程序时,我的所有偏好数据都被清除。
我正在使用这个课程来设置和获得偏好。
public class Preferences {
private Context _context;
private SharedPreferences _preferences;
private Editor _editor;
private String prefName = "pref";
//=====
public Preferences(Context context){
_context = context;
_preferences = this._context.getSharedPreferences(prefName, Context.MODE_PRIVATE);
_editor = this._preferences.edit();
}
//=====
public Preferences commit(){
_editor.commit();
return this;
}
//=====
public Preferences set(String key, String value){
_editor.putString(key, value);
return this;
}
//=====
public String get(String key){
return _preferences.getString(key, "");
}
//=====
public Preferences set(String key, int value){
_editor.putInt(key, value);
return this;
}
//=====
public int getInt(String key){
return _preferences.getInt(key, 0);
}
//=====
public Preferences setBoolean(String key, boolean value){
_editor.putBoolean(key, value);
return this;
}
//=====
public void removeKey(String key){
_editor.remove(key);
}
//=====
public boolean getBoolean(String key){
return _preferences.getBoolean(key, false);
}
}
任何人都可以帮助我...... ??
答案 0 :(得分:1)
像这样更改您的设置方法
public Preferences set(String key, int value){
_editor.putInt(key, value);
_editor.commit();
return this;
}
你不需要单独的commit()进入独立的方法。
祝你好运答案 1 :(得分:0)
这是另一个例子,在这个例子中,我创建了一个保存我的城市名称的值,当我的应用程序启动时,我检查是否存在,如果存在,该键的值将返回给我。
SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// define sp
sp=getSharedPreferences("test", Context.MODE_PRIVATE);
// get sp value if exist
if(sp.contains("EkbatanApp")){
String spResult=sp.getString("EkbatanApp", "");
}
}
//save key
public void SaveSettingOnClick(View v){
Editor editor=sp.edit();
editor.putString("EkbatanApp", "Borujerd");
editor.commit();
}