2012-10-08 64 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