【发布时间】:2012-10-05 11:45:37
【问题描述】:
我正在使用以下代码将数据存储在共享首选项中。 但是,每当调用此代码时,虚拟设备都会告诉我应用程序 停止响应。有什么建议为什么会发生这种情况?
SharedPreferences spref = this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = spref.edit();
editor.putString("td", "SharedPref"); //name-value pair
editor.commit();
编辑: 现在我正在使用以下
SharedPreferences spref = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE); SharedPreferences.Editor 编辑器 = spref.edit(); editor.putString("td", "SharedPref"); editor.commit();
但我仍然收到“应用程序已意外停止..请重试”
虚拟设备似乎有问题。重新创建后,我的应用程序开始正常工作。
【问题讨论】:
-
尝试使用 getSharedPreferences,然后粘贴 logcat。
-
您是想在 Activity 类内部还是在 Activity 类外部使用它?如果它在带有两个参数的 Activity 类
getSharedPreferences()内就足够了。第一个参数是要保存在 SharedPreference 位置的文件的名称,第二个参数是 mode。您只给出了 mode。 -
@AnujAroshA 我仍然收到错误消息。请检查我的编辑代码
-
嘿亚当,你能发布更多你的代码吗?很抱歉,当其他人说您需要使用 getSharedPreference 或使用外部存储时,他们应该是错的。使用 getPreferences() 是合法的,如果不是总是你想做的。但是,您现在拥有的代码应该是合法的,因此我们需要更多信息。具体来说,您能否发布您的整个 Java 文件和 logcat 输出?
-
很高兴它成功了。想知道问题可能是什么:) 至于我之前所说的,如果您使用 getPreferences(int mode),虽然它是合法的,但如果您想要 Activity 独有的首选项,而不是整个应用程序,建议您这样做。因此,它与 getSharedPreferences(string, int) 之间的区别在于,您正在使用该字符串名称创建一个“文件”,您可以通过随后使用相同字符串调用 getSharedPreferences 在整个应用程序中访问该文件。