加載Sharedpreferences我想創建一個PreferenceActivity並使用XML文件來加載可由用戶配置的偏好。但不知何故「默認值」沒有正確加載。這是我的preferenceActivity代碼:無法從XML
public class Instellingen extends PreferenceActivity{
public static final int mode= Activity.MODE_PRIVATE;
public static final String KEY_LOCKACTIONS = "lockactions";
public static final String KEY_VERSIE = "Versie";
public static final String KEY_CHAUFFEUR = "Chauffeur";
public static final String KEY_LATITUDE = "Latitude";
public static final String KEY_LONGITUDE = "Longitude";
public static final String KEY_NEEDLOCUPDATE = "NeedLocUpdate";
public static final String KEY_NEEDAPPUPDATE = "NeedAppUpdate";
public static final String KEY_NEEDSYNC = "NeedSync";
public static final String KEY_SYNCCONTENT = "NeedSyncContent";
public static final String KEY_THREADCOUNT = "ThreadCount";
public static final String KEY_FREESYNCTHREAD = "FreeSyncThread";
public static final long version = 0;
static SharedPreferences mySharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
mySharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
}
public static Boolean GetBoolean(Context context, String Name)
{
mySharedPreferences = context.getSharedPreferences("KCStandaardSettings", mode);
return mySharedPreferences.getBoolean(Name, false);
}
這是我試圖獲得價值的代碼段:
@Override
public void run() {
Boolean music = Instellingen.GetBoolean(contextAfterThread, "noteSound");
for (int i = 0; i < number; i++) {
try {
sleep(500);
} catch (InterruptedException e) {
TLogFile.appendLog("e", "log_tag", "Error sleeping soundthread " + e.toString());
e.printStackTrace();
}
if(music){
TSound.PlayNotification(contextAfterThread);
}
}
}
,這是XML本身(文件名是喜好。 XML)
<CheckBoxPreference
android:id="@+id/cbRemainLoggedPreferences"
android:defaultValue="false"
android:key="RemainLoggedIn"
android:title="@string/remainLoggedIn" />
<CheckBoxPreference
android:id="@+id/cbNotificationSound"
android:defaultValue="true"
android:key="noteSound"
android:title="@string/Sound" />
<!-- <CheckBoxPreference
android:id="@+id/cbWidgetAllPreferences"
android:defaultValue="true"
android:key="cbWidgetAll"
android:title="Toon in de Widget de tab met alle berichten" />
<CheckBoxPreference
android:id="@+id/cbWidgetUnreadPreferences"
android:defaultValue="true"
android:key="cbWidgetUnread"
android:title="Toon in de Widget de tab met ongelezen berichten" />
<CheckBoxPreference
android:id="@+id/cbWidgetReadPreferences"
android:defaultValue="true"
android:key="cbWidgetRead"
android:title="Toon in de Widget de tab met gelezen berichten" />-->
我知道在討論同樣的問題之前,有很多問題。我仍然問這個問題的原因是因爲他們都沒有爲我工作。 我試着使用: PreferenceManager.setDefaultValues(這一點,R.xml.preferences,FALSE);
但就像我說的它並沒有解決我的問題。清楚的是,問題在於未找到導致由SharedPreferences函數返回的默認「錯誤」值的密鑰。
是否有機會出現,因爲事實上,我建立這個應用程式targetsdk LVL 8這個問題?這是Android 2.2的
這只是一個假設,但您引用了兩個不同的sharedPreferences。首先您使用PreferenceManager獲取默認值,然後您嘗試使用您的密鑰「KCStandaardSettings」獲取它們。只使用一個.... – Opiatefuchs
謝謝,但你有任何想法如何實現,在我的preferences.xml? – user