我在我的Android应用程序中使用SharedPreference来存储字符串值,但它总是从.getString(String key,String defValue)获取defValue,尽管有一个设定值。
这是我的代码:
public class AddAlert extends Activity {
[...]
public static final String LAST_ALERT_TIME = "1414931472952";
[...]
public boolean checkIfMoreThanTenMinutesFromLastAlert() {
SharedPreferences lastAlertTimeSettings = getSharedPreferences(LAST_ALERT_TIME, 0);
String lastAlertTime = lastAlertTimeSettings.getString(LAST_ALERT_TIME, null);
double currentDate = new Date().getTime();
if (getDifference(currentDate, Double.valueOf(lastAlertTime))/1000/60>10) {
return true;
} else return false;
}
public double getDifference(double currentDate, double lastAlertDate) {
//milliseconds
double difference = currentDate - lastAlertDate;
return difference;
}
}
问题是LAST_ALERT_TIME有一个预设值,但它总是返回defValue(" null"在这种情况下为")。
我在做什么事吗?
谢谢!
答案 0 :(得分:0)
在您的应用中获得偏好之前
确保设置数据来源
为您获得的密钥提供真正的价值
PreferenceManager.setDefaultValues(this, R.xml.default_values, false);
SharedPreferences.Editor ed = PreferenceManager.getDefaultSharedPreferences(this).edit();
ed.putString("LAST_ALERT_TIME", getString(R.string.db_app_id));
ed.apply(); // or commit()