Android中的共享偏好制造问题。 "String lastAlertTime = lastAlertTimeSettings.getString(LAST_ALERT_TIME, null)"返回



我在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")。

我做错什么了吗?

谢谢!

在您的应用程序中获得偏好之前

  1. 确保设置了数据源

  2. 为您的密钥提供真正的价值,即您正在获得

    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()
    

最新更新