2014-10-13 1 views
2

У меня проблема с значениями по умолчанию для предпочтений. Я пытаюсь установить значение по умолчанию из xml-файла и затем извлечь его. Это мой код:Android PreferenceManager.setDefaultValues ​​проблема

public class MainActivity extends Activity { 
int prefValue; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    PreferenceManager.setDefaultValues(this, R.xml.preferences, true);   

    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); 

    prefValue = settings.getInt("settingValue", 3); 
    Log.v("TAGSETT", "p1 "+prefValue); 

    Editor editor = settings.edit(); 
    editor.putInt("settingValue", 25); 
    editor.commit(); 

    prefValue = settings.getInt("settingValue", 3); 
    Log.v("TAGSETT", "p2 "+prefValue); 
} 

и это preferences.xml:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <Preference android:key="settingValue" android:persistent="true" android:defaultValue="10"/> 
</PreferenceScreen> 

Это выход:

p1 3 
p2 25 

, но на самом деле я ожидал этого:

p1 10 
p2 25 

Что случилось? Спасибо заранее.

ответ

0

Затем измените значение по умолчанию по умолчанию на , т. Е. изменить

prefValue = settings.getInt("settingValue", 3); 

к

prefValue = settings.getInt("settingValue", 10); 
+1

выход "p1 3" означает, что "settingValue" не выставиться в SharedPreferences. Использование "prefValue = settings.getInt (" settingValue ", 10);" prefValue получает «10» не из настроек, а из параметра, переданного в «settings.getInt();» – Andrea

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

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