2010-03-23 62 views
0

我被困在一個點,我試圖讓我的項目讀取一個首選項值(從ListPreference列表),然後在基本數學中使用該值減法實例。問題在於我的Java代碼沒有看到「seek」首選項,但默認值是(我嘗試使用默認值3000,現在爲0)。我錯過了什麼,這裏有一個錯誤,知道或未知?getSharedPreferences對ListPreferences和Integers不適合我,關注ListPreferences和Integer

這裏是我的Java代碼塊,其中問題通常表現爲:

public static final String PREF_FILE_NAME = "preferences"; 
seekback.setOnClickListener(new Button.OnClickListener() { 
@Override 
public void onClick(View view) { 
try { 
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE); 
Integer storedPreference = preferences.getInt("seek", 0); 

(mediaPlayer.getCurrentPosition()-storedPreference); 

} catch (Exception e) { 
e.printStackTrace(); 
} 
} 
}); 

這裏是我的項目的一些其他代碼位:

從首選項文件:

<ListPreference 
android:entries="@array/seconds" 
android:entryValues="@array/seconds_values" 
android:summary="sets the seek interval for the seekback and seekforward buttons" 
android:title="Seek Interval" 
android:defaultValue="5000" 
android:key="@string/seek"> 
</ListPreference> 

從字符串文件:

<string name="seek">seek</string> 

從一個數組文件:

<resources> 
    <string-array 
     name="seconds"> 
     <item>Five seconds</item> 
     <item>Fifteen seconds</item> 
     <item>Thirty seconds</item> 
     <item>Sixty seconds</item> 
    </string-array> 
    <string-array 
     name="seconds_values"> 
     <item>5000</item> 
     <item>15000</item> 
     <item>30000</item> 
     <item>60000</item> 
    </string-array> 
</resources> 

讓我知道如果你需要看到更多的代碼,以弄清楚這一個

預先感謝,可以提供任何幫助。我已經在這個問題上工作了幾個小時,並且我被燒了,第二雙眼睛將會非常感激。

回答

0

請確保您將ListPreference值存儲在相同的文件中。 啓動adb滾動到cd /data/data/com.your.package並查找類型首選項的文件夾和文件。

我認爲錯誤是你指定一個比的設置已保存過一個不同的文件:

嘗試改變這一點:

SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE); 

SharedPreferences preferences = PreferenceManager 
       .getDefaultSharedPreferences(context); 
+0

感謝您的意見,請裸露在我身上。我已更改爲SharedPreferences首選項= PreferenceManager .getDefaultSharedPreference(getBaseContext());不過,我正在直接在手機上進行調試。我看到了我的項目的路徑,但它在F:\ data \ com.mypackage中,我看到的只是應該寫入該目錄的一個文件(工作正常,無論是讀取還是寫入)。 PS。我安裝了手機的SD,是否能夠提供準確的路徑視圖,還是需要按照您在此處提到的adb路線進行操作?再次感謝您的幫助。 – user227604 2010-03-23 23:45:03

+0

你正在做的很好,檢查pref文件並在編輯器中打開,並檢查鍵是否存在並保存正確的值。 – Pentium10 2010-03-23 23:51:30

+0

它看起來像正確序列化的值。我在EditPlus 3中打開它並查看android:key =「@ string/seek」。它也在res/xml目錄中。 – user227604 2010-03-24 00:00:46

2

我已經解決了這個問題。事實證明,我的項目是用「_」字符命名的,一旦我重構了下劃線(並使用了getDefaultSharedPreferences選項),所有工作都應該如此。

這個問題吸收了我30個小時的時間!