2011-02-26 93 views
0

我正嘗試使用首選項屏幕。我遵循在線教程中的所有步驟(一旦我無法工作,我發現其他教程,並且步驟似乎沒有問題)。我進入首選項屏幕,編輯值,返回到調用活動(通過硬件返回按鈕)。在DDMS透視圖中,FileExplorer顯示應該存儲首選項的package_name_preferences.xml文件。它包含:Android:首選項未被自動存儲

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<map> 
<string name="false">kg</string> 
</map> 

雖然我期望(數據線只顯示)。

<string name="weight">kg</string> 

另外,如果我去改變只有1個偏好,同樣價值的變化,而不是新建一行。我只是試圖寫我自己的偏好類,將數據存儲在文件或數據庫中,但我知道偏好應該工作,它只是不能正確保存我的東西。

編輯

教程使用: Main Tutorial - 用該作爲基礎的,簡化的,因爲我只需要3 listPreferences爲止。

Another One - 用這一個回來時,第一個安裝的Android,所以提到這個一個用於其喜好

代碼部分:(屏幕負荷,所以我沒有表現出艙單)

public class MyPrefs extends PreferenceActivity { 
    @Override 
    public void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     addPreferencesFromResource(R.xml.my_prefs); 
    } 
} 

從MainScreen

my_prefs.xml

<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory android:title="Value Settings"> 
     <ListPreference android:title="Distance" 
         android:summary="Metric (Kilometer) vs Imperial (Imperial)" 
         android:defaultValue="km" 
         android:key="@+id/distanceMesurement" 
         android:entries="@array/distance" 
         android:entryValues="@array/distance_values"/> 
     <ListPreference android:title="Weight" 
         android:summary="Metric (Kilogram) vs Imperial (Pound)" 
         android:defaultValue="kg" 
         android:key="@+id/weightMesurement" 
         android:entries="@array/weight" 
         android:entryValues="@array/weight_values"/> 
    </PreferenceCategory> 
</PreferenceScreen> 

調用MyPrefs

Intent i = new Intent(MainScreen.this, MyPrefs.class); 
startActivity(i); 

arrays.xml

<resources> 
<string-array name="weight"> 
    <item name="kg">Kilogram (kg)</item> 
    <item name="lb">Pound (lb)</item> 
</string-array> 
<string-array name="weight_values"> 
    <item name="kg">kg</item> 
    <item name="lb">lb</item> 
</string-array> 
<string-array name="distance"> 
    <item name="km">Kilometer (km)</item> 
    <item name="mi">Mile (mi)</item> 
</string-array> 
<string-array name="distance_values"> 
    <item name="km">km</item> 
    <item name="mi">mi</item> 
</string-array> 
</resources> 
+1

你指的是哪個在線教程?如果你的代碼與那裏的代碼不同,請發佈相關部分。 – mikerowehl 2011-02-26 22:48:41

+0

告訴我們一個代碼片段.... – mixkat 2011-02-26 22:52:57

回答

2

你的關鍵的語法是無效的。使用:

android:key="weight" 
+0

哇,甚至不會想這樣做。奇蹟般有效。謝謝。 – Vitaly 2011-02-27 01:08:03

+0

無效,錯過:) – ancm 2016-05-18 02:27:31