对于ListPreferences和Integers的问题,getSharedPreferences不适用于我

时间:2010-03-23 20:23:05

标签: android sharedpreferences integer listpreference

我遇到了一个问题,我试图让我的项目读取一个偏好值(来自ListPreference列表),然后在基本的数学减法实例中使用该值。问题是我的Java代码没有看到“搜索”偏好,但默认值是(我已尝试使用3000的默认值,现在为0)。我错过了什么,这里有错误,已知还是未知?

这是我的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>

如果您需要查看更多代码,请告诉我

提前感谢您提供的任何帮助。我已经在这个问题上工作了几个小时而且我被烧了,第二双眼睛就会非常感激。

2 个答案:

答案 0 :(得分:2)

我已经解决了这个问题。事实证明我的项目是用“_”字符命名的,一旦我重构了下划线(并使用了getDefaultSharedPreferences选项),一切都正常工作。

这个问题吸收了30个小时的时间!

答案 1 :(得分:0)

确保将ListPreference值存储在相同的文件中。 启动adb滚动到cd /data/data/com.your.package并查找首选项类型的文件夹和文件。

我认为错误是你指定的文件不同于保存设置的文件:

尝试更改此内容:

SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

SharedPreferences preferences = PreferenceManager
                .getDefaultSharedPreferences(context);