2014-11-02 30 views
0

我在我的Android應用程序中使用SharedPreference來存儲字符串值,但它總是從.getString(String key,String defValue)中獲取defValue,儘管有一個設定值。Android中的SharedPreference出現問題。 「String lastAlertTime = lastAlertTimeSettings.getString(LAST_ALERT_TIME,null)」返回null

這裏是我的代碼:

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(「空」在這種情況下「)

這有什麼錯。我在做什麼?

謝謝!

+0

一個真正的價值?這很奇怪。無論如何,你需要做的,首先存儲的東西(如默認值)對LAST_ALERT_TIME鍵,然後當你檢索的值,你不會得到空。 – 2014-11-02 17:59:46

回答

0

你在你的應用程序偏好之前,

  1. 確保您設置數據

  2. 來源爲您提供關鍵的是你爲什麼要使用LAST_ALERT_TIME爲重點越來越

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