2013-05-20 45 views
0
private void init() { 

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE); 

    // SET VALUE RECORD 

    record = prefs.getInt("record", 0); 

    prefs.edit().commit(); 
} 

private void setRecord(int i) { 

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE); 

    if(i > prefs.getInt("record", 0)) 
     prefs.edit().putInt("record", i); 

    prefs.edit().commit(); 
} 

private int getRecord() { 

    int rec; 

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE); 

    rec = prefs.getInt("record", 0); 

    prefs.edit().commit(); 

    Toast toast = Toast.makeText(this, rec+"", Toast.LENGTH_SHORT); 
    toast.show(); 

    return rec; 
} 

此代碼應設置一個int和檢索它,但它似乎沒有以往任何時候都設置......你可以看到這是爲什麼?SharedPreferences工作不正常,不能讀也不會寫的喜好

+0

if(i> prefs.getInt(「record」,0)) 對於這個工作,你必須在之前放置一條記錄。你在哪裏做的? – nedaRM

回答

1

認爲這是最好的調用接口SharedPreferences.Editor編輯而不是使用prefs.edit().putInt("record", i);偏好。該文件說...

修改的喜好必須經過一個 SharedPreferences.Editor對象,以確保優先值一致的狀態和控制仍然 時,他們都致力於存儲。

如果您改變setMethod以下它應該工作...

private void setRecord(int i) { 

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = prefs.edit(); 

    if(i > prefs.getInt("record", 0)) 
     editor.putInt("record", i); 

    editor.commit(); 
} 

我猜你調用上述方法setRecord地方在你的代碼,因爲我無法看到它被稱爲您粘貼的代碼段中的任何位置。

+0

謝謝,那是確切的問題=) – DomeWTF

+0

不用擔心@DomeWTF。祝你有美好的一天! – neo108

1

嘗試

Editor editor = prefs.edit(); 
editor.putInt("record",i); 
editor.commit();