簡體   English   中英

Android sharedPreferences設置默認值問題

[英]Android sharedPreferences set default values issue

我在項目中使用了一些活動。 其中之一是從PreferenceActivity擴展的。 我有一個CheckBoxPreference和一個EditTextPreference,我可以使用以下方法從所有其他活動中獲取值:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
pref = sharedPrefs.getString("edit_text_pref", "error");

但是當我打開我的應用程序時,必須將這些值設置為默認值,因此我正在使用:

PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().clear().commit(); 

在我的主要活動中。 一切都應該沒問題,但是如果在從首選項菜單中設置首選項之前嘗試獲取首選項,則會收到“錯誤”,而不是我在xml首選項文件中設置的默認值。 如果我評論getDefaultSharedPreferences行,則可以正常工作,但很明顯,當我打開該應用程序時,會得到舊的首選項。 我該如何繞過這個問題?

看看http://developer.android.com/reference/android/preference/PreferenceManager.html#setDefaultValues%28android.content.Context,%20int,%20boolean%29

您必須使用此setDefaultValues (Context context, int resId, boolean readAgain)類似

PreferenceManager.setDefaultValues(this, R.xml.preference, false);

仔細查看參數中的注釋部分。 這是在重復讀取參數

context共享首選項的上下文。

resId首選項XML文件的資源ID。

readAgain是否重新讀取默認值。 如果為false,則只有在以前從未調用過此方法(或者如果默認值共享首選項文件中的KEY_HAS_SET_DEFAULT_VALUES為false)時,此方法才設置默認值。 要嘗試繞過此檢查再次設置默認值,請將readAgain設置為true。

注意:這不會將首選項恢復為默認值。 對於該功能,請使用getDefaultSharedPreferences(Context)並清除它,然后調用此方法並將此參數設置為true

所以我想清除它后,您需要通過將readAgain傳遞為true來將其設置為默認值

就像是

PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().clear().commit();
 PreferenceManager.setDefaultValues(this, R.xml.preference, true);

您正在接收默認值本身,即“錯誤”,因為使用“首選項”時,當您獲取任何首選項的值時,您需要指定一個值,如果之前未設置該首選項,則該值將返回。 就您而言,在此處將默認值設置為“錯誤”時, pref = sharedPrefs.getString("edit_text_pref", "error"); 所以多數民眾贊成在默認值。

好吧,我堅稱“錯誤”是在讀取值時出錯而不是未設置值時使用的值!

謝謝,應該可以,我要嘗試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM