我遇到了一个问题,我试图让我的项目读取一个偏好值(来自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>
如果您需要查看更多代码,请告诉我
提前感谢您提供的任何帮助。我已经在这个问题上工作了几个小时而且我被烧了,第二双眼睛就会非常感激。
答案 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);