我在Android应用程序中使用SharedPreference来存储字符串值,但它总是从.getString(string键,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")。
我做错什么了吗?
谢谢!
在您的应用程序中获得偏好之前
-
确保设置了数据源
-
为您的密钥提供真正的价值,即您正在获得
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()