好的,在 Udacity Android 开发课程之后,我到达了希望访问保存到名为 pref_general.xml 的 sharedPreferences 文件中的邮政编码的部分,该文件具有以字符串类型保存的邮政编码并通过连接到名为 location 的键键值对。
我解决这个问题的方法是使用 getSharedPreferences() 方法按名称获取文件。虽然这似乎不会导致问题,因为文件没有变成 null,但尝试检索邮政编码导致无法通过键找到值并确定参数的给定默认值。
SharedPreferences appPreferences = getActivity().getSharedPreferences("pref_general", Context.MODE_PRIVATE);
if(appPreferences == null) {
Log.v("ERRORTAG", "Cannot get sharedPreferences file");
}
String getPostal = appPreferences.getString(getString(R.string.pref_location_key), "0");
Log.v("ERRORTAG", getPostal);
logcat 上的第二个详细语句导致默认字符串值 0,而不是与给定键 94043 邮政编码绑定的值。
现在 Udacity 给出的答案是使用 PreferenceManager,它获取与 Activity 绑定的默认单独的 sharedPreferences 文件
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
该文件不为空,并且检索到的邮政编码是在 sharedPreference 文件中设置为键值对的给定默认邮政编码 94043。
我想了解为什么我的方法不起作用;它非常接近。唯一的区别是文件的访问方式。请给我一个解释为什么。谢谢你。