沒問題,在Udacity Android Development Course之後,我到達了我希望訪問保存到名爲pref_general.xml的sharedPreferences文件的郵政編碼的部分,郵政編碼保存爲字符串類型,並通過鍵值對連接到稱爲位置的鍵。Android:PreferenceManager vs Context.getSharedPreferences()以及爲什麼後者讓我失敗
我對問題的解決方法是使用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,它抓住默認孤獨sharedPreferences文件捆綁到活動
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
該文件不爲空,並將檢索郵政編碼是違約郵政編碼94043在sharedPreference文件中設置爲鍵值對。
我想了解爲什麼我的方法無法正常工作;它非常接近。唯一的區別是文件被訪問的方式。請給我一個解釋,爲什麼。謝謝。
顯示您創建'pref_general'文件的代碼並將郵政編碼存儲在其中。 –
在附註中,我希望Udacity不會教你將字符串常量放入'strings.xml'中。這是可本地化的UI字符串。 –
Udacity告訴我們使用已棄用的方法來通過SettingsActivity添加首選項,以便定位Gingerbread操作系統設備。也就是說,郵政編碼的字符串常量實際上是通過pref_general.xml中的android:defaultValue創建的xml屬性,並且它的字符串綁定到strings.xml顯然是您所反對的。本地化的UI字符串是什麼意思? – kthieu