我被困在一个点,我试图让我的项目读取一个首选项值(从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>
让我知道如果你需要看到更多的代码,以弄清楚这一个
预先感谢,可以提供任何帮助。我已经在这个问题上工作了几个小时,并且我被烧了,第二双眼睛将会非常感激。
感谢您的意见,请裸露在我身上。我已更改为SharedPreferences首选项= PreferenceManager .getDefaultSharedPreference(getBaseContext());不过,我正在直接在手机上进行调试。我看到了我的项目的路径,但它在F:\ data \ com.mypackage中,我看到的只是应该写入该目录的一个文件(工作正常,无论是读取还是写入)。 PS。我安装了手机的SD,是否能够提供准确的路径视图,还是需要按照您在此处提到的adb路线进行操作?再次感谢您的帮助。 – user227604 2010-03-23 23:45:03
你正在做的很好,检查pref文件并在编辑器中打开,并检查键是否存在并保存正确的值。 – Pentium10 2010-03-23 23:51:30
它看起来像正确序列化的值。我在EditPlus 3中打开它并查看android:key =“@ string/seek”。它也在res/xml目录中。 – user227604 2010-03-24 00:00:46