2010-03-23 2 views
0

Я застрял в точке, где я пытаюсь получить мой проект, чтобы прочитать значение предпочтения (из списка ListPreference), а затем использовать это значение в базовом математическом вычитания. Проблема в том, что предпочтение «искать» не видно моим Java-кодом, и все же значение по умолчанию (я пробовал значение по умолчанию с 3000 и теперь 0). Мне что-то не хватает, есть ли здесь ошибка, известная или неизвестная?getSharedPreferences, не работающий для меня с проблемами ListPreferences и целых чисел

Вот мой код 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

+0

У вас все в порядке, проверьте файл pref и откройте его в редакторе и проверьте, существует ли ключ и содержит правильное значение. – Pentium10

+0

Похоже, что значение сериализовано правильно. Я открыл его в EditPlus 3 и посмотрел андроид: key = "@ string/seek". Он также находится в каталоге res/xml. – user227604

2

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

Этот вопрос поглотил 30 часов моего времени!

 Смежные вопросы

  • Нет связанных вопросов^_^