Android中的SharedPreference出现问题。 " String lastAlertTime = lastAlertTimeSettings.getString(LAST_ALERT_TIME,null)"返回null

时间:2014-11-02 17:49:39

标签: android sharedpreferences

我在我的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"在这种情况下为")。

我在做什么事吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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