我正在尝试设置共享首选项,但以下代码在两种情况下都会产生false
。
我首先得到该标志的值,当它不存在并期望false
时。但是,我将值设置为true
并再次获取标记,这次我希望true
但它仍然是false
。
SharedPreferences sharedPref = getSharedPreferences("myapp",0);
//fetch value when it does not exist
Boolean mobileFlag = sharedPref.getBoolean("mobile_flag", false);
Log.d("mobileFlag1", mobileFlag+"");
//set the value
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("mobile_flag",true);
//fetch value when it has been set.
mobileFlag = sharedPref.getBoolean("mobile_flag", false);
Log.d("mobileFlag2", mobileFlag+"");
两次日志消息的结果都是:
D/mobileFlag1﹕ false
D/mobileFlag2﹕ false
答案 0 :(得分:3)
您没有提交新值
editor.putBoolean("mobile_flag",true).commit();
答案 1 :(得分:2)
您需要在完成SharedPreferences中的变量编辑后提交更改。
editor.commit();
答案 2 :(得分:1)
使用editor.putBoolean("mobile_flag",true);
后,您需要放置editor.commit()
。这将保存您的sharedPreference,否则将不会保存任何内容。