2010-09-16 4 views
0

Я пытаюсь создать раздел настроек для своего приложения. У меня есть разрешения/XML/settings.xml:Мои предпочтения не 'sticking'

<?xml version="1.0" encoding="utf-8"?> 
    <PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <ListPreference 
    android:key="numberOfYears" 
    android:title="Number of Years to Read the Bible" 
    android:summary="How many years would you like to take to read through the reading plan?" 
    android:entries="@array/numberOfYears" 
    android:entryValues="@array/numberOfYears" 
    android:dialogTitle="How Many Years?" 
    /> 
    <CheckBoxPreference android:key="ignoreDates" 
    android:title="Ignore Dates" 
    android:summary="Would you like to use the dates in the plan?" 
    /> 
</PreferenceScreen> 

У меня есть класс называется Preferences, который распространяется PreferenceActivity и содержит следующее:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.settings); 
} 

Я не был уверен, если это требуется, но я также добавил следующее к моей основной деятельности:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(Menu.NONE, PREFS_MENU, Menu.NONE, "Preferences"); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    Log.d(TAG, "Menu Item: " + item.getItemId()); 
    switch (item.getItemId()) { 
    case PREFS_MENU : 
     startActivity(new Intent(this, Preferences.class)); 
     return true; 
    } 
    return false; 
} 

Это похоже на работу в том, что я получаю меню «Настройки», который, когда выбран, запускает свои предпочтения. Однако, когда я выбираю что-либо, значения, похоже, не прилипают. Мое понимание было в том, что ключа android: достаточно было, чтобы система установила выбранные значения в стандартных настройках по умолчанию - не так ли?

Что мне не хватает?

+0

«когда я выбираю что-нибудь значение, похоже, не придерживаться» - то, что ваше определение этого? Вот пример проекта, который работает: http://github.com/commonsguy/cw-android/tree/master/Prefs/Dialogs/ – CommonsWare

+0

Если я зайду и задаю предпочтение, нажмите «Назад», а затем зайдите снова, затем предпочтения не установлены. Вот что я имею в виду, не придерживаясь. Однако я посмотрю на ваш проект. Благодарю. –

+0

Интересно, если я использую adb для перехода и рассмотрю общие настройки - значения установлены. Почему же они не появляются при настройке предпочтений? –

ответ

0

Не уверен, что я сделал это правильно, и я хотел бы иметь входные данные или другую лучшую или лучшую практику.

Я сделал мой класс PreferenceActivity также реализует OnSharedPreferenceChangeListener, и эти методы реализованы следующим образом:

@Override 
protected void onResume() { 
    super.onResume(); 
    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); 
} 

public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) { 
    // TODO Auto-generated method stub 
    Preference pref = findPreference(arg1); 
    if (pref instanceof ListPreference) { 
     ListPreference listPref = (ListPreference)pref; 
     pref.setSummary(listPref.getEntry()); 
    } 
    else { 
     pref.setSummary(arg0.getString(arg1, pref.getSummary().toString())); 
    } 
} 
Смежные вопросы