getSharedPreferences не работает для меня с проблемами ListPreferences и Integers - PullRequest
0 голосов
/ 23 марта 2010

Я застрял в точке, где я пытаюсь заставить свой проект прочитать значение предпочтения (из списка 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 ]

2 голосов
/ 04 апреля 2010

Я решил эту проблему. Оказывается, что мой проект был назван символом "_", и как только я реорганизовал подчеркивание (и использовал опцию getDefaultSharedPreferences), все работает так, как должно быть.

Этот выпуск занял 30 часов моего времени!

0 голосов
/ 23 марта 2010

Убедитесь, что вы храните значения ListPreference в тех же файлах. Запустите adb, перейдите к cd /data/data/com.your.package и найдите папки и файлы с настройками типа.

Я думаю, что ошибка в том, что вы указываете файл, отличный от того, в котором был сохранен параметр:

Попробуйте изменить это:

SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

до

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