2012-10-08 63 views
0

我這個簡單的代碼:SharedPreferences和模擬器

 SharedPreferences settings = getSharedPreferences(Constants.USER_DETAILS, 0); 
     SharedPreferences.Editor editor = settings.edit(); 

     //editor.putLong(Constants.USER_DETAILS_SIGNEDINON, registerResponse.getSignedInOn()); // signed in on 

     editor.putLong(Constants.USER_DETAILS_SIGNEDINON, 1); // signed in on 
     long test = settings.getLong(Constants.USER_DETAILS_SIGNEDINON, 2); 

     if (settings.edit().commit()) { 
      System.out.print("ok"); 
     } else { 
      System.out.print("not ok"); 
     } 

,你可以看到我一直在玩弄明白是怎麼回事。

所以,我檢查了/數據/數據/ ...和首選項文件確實產生,但是是空的(只是地圖標記)

測試長變量返回2,即使我把它到1行之前。 該提交返回true。

我錯過了什麼嗎?

我已經設置了使用權限android:name = android.permission.WRITE_EXTERNAL_STORAGE 雖然我相信這只是在我真正做外部存儲時才需要。

問候。 David。

+0

您需要提交更改嘗試讀取前值。添加值(putLong) - > commit - >讀取值(getLong) – Zyber

+0

它不起作用。我有adb拉我的電腦上的文件,和XML文件是空的。我已檢查過時間戳,並且該文件甚至未被Emulator觸及:-rw -rw -rw-root root 2012-10-08 10:57 UserDetails.xml(但您可以看到文件的完整權限) –

回答

1

試試這段代碼。

SharedPreferences settings = getSharedPreferences(Constants.USER_DETAILS, 0); 
    SharedPreferences.Editor editor = settings.edit(); 

    //editor.putLong(Constants.USER_DETAILS_SIGNEDINON, registerResponse.getSignedInOn()); // signed in on 

    editor.putLong(Constants.USER_DETAILS_SIGNEDINON, 1); // signed in on 

    if (editor.commit()) { 
     System.out.print("ok"); 
    } else { 
     System.out.print("not ok"); 
    } 
    long test = settings.getLong(Constants.USER_DETAILS_SIGNEDINON, 2); 
+0

已經嘗試過這一個......我的代碼不過是教程所說的!奇怪的 –

+0

那麼,你如何得到它的工作? –

0
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);  0 - for private mode 
Editor editor = pref.edit(); 
editor.putBoolean("key_name", true); // Storing boolean - true/false 
editor.putString("key_name", "string value"); // Storing string 
// returns stored preference value 
// If value is not present return second param value - In this case null 
pref.getString("key_name", null); // getting String 
pref.getInt("key_name", null); // getting Integer 
editor.remove("name"); // will delete key name 
editor.remove("email"); // will delete key email 

editor.commit(); // commit changes 
editor.clear(); 
editor.commit(); // commit changes 
+0

這段代碼有什麼不同? –

+1

明白了!乾杯.... settings.edit()。commit()不工作...需要改變編輯()。commit() –

+0

如果這個Ans幫助你然後接受它(意味着點擊右邊的標記): ) – sachin10

3

有一件事我跑中的是,你不能保持通話pref.edit(),並期待您的更改持續存在。看起來每次調用pref.edit()都會產生一個新的編輯器(不是單例)。

不會存留:

pref.edit().remove("key"); // new editor created 
pref.edit().commit();  // new editor created 

將持續:

Editor edit=pref.edit(); // new editor created 
edit.remove("key");  // same editor used 
edit.commit();    // same editor used