Android: настройки не сохраняются автоматически - PullRequest
0 голосов
/ 27 февраля 2011

Я пытаюсь использовать экран настроек. Я выполняю все шаги из онлайн-урока (как только я не смог заставить его работать, я нашел другие уроки, и шаги кажутся хорошими). Я попадаю на экран настроек, редактирую значения, возвращаюсь к активности вызова (через аппаратную кнопку возврата). В перспективе DDMS FileExplorer показывает файл package_name_preferences.xml с настройками, которые следует сохранить. Содержит:

 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
 <map>
 <string name="false">kg</string>
 </map>

пока я ожидаю (отображается только строка данных).

<string name="weight">kg</string>

Кроме того, если я изменю только 1 параметр, меняется то же значение, и новая строка не создается. Я просто испытываю желание написать свои собственные классы предпочтений, которые будут хранить данные в файлах или БД, но я знаю, что предпочтения должны работать, просто они не сохраняют мои вещи должным образом.

Редактировать

Использованные учебники: Основной учебник - Использовал это как основу, упрощенно, так как мне нужно было всего 3 listPreferences.

еще один - использовал этот обратно при первой установке Android, поэтому обратитесь к этому для его раздела о настройках

Код: (Экран загружается, поэтому я не показываю Манифест)

public class MyPrefs extends PreferenceActivity {
   @Override
   public void onCreate(Bundle bundle) {
       super.onCreate(bundle);
       addPreferencesFromResource(R.xml.my_prefs);
   }
}

my_prefs.xml

<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="Value Settings">
        <ListPreference android:title="Distance"
                        android:summary="Metric (Kilometer) vs Imperial (Imperial)"
                        android:defaultValue="km"
                        android:key="@+id/distanceMesurement"
                        android:entries="@array/distance" 
                        android:entryValues="@array/distance_values"/>
        <ListPreference android:title="Weight"
                        android:summary="Metric (Kilogram) vs Imperial (Pound)" 
                        android:defaultValue="kg"
                        android:key="@+id/weightMesurement"
                        android:entries="@array/weight"
                        android:entryValues="@array/weight_values"/>
    </PreferenceCategory>
</PreferenceScreen>

вызов MyPrefs с главного экрана

Intent i = new Intent(MainScreen.this, MyPrefs.class);
startActivity(i);

arrays.xml

<resources>
<string-array name="weight">
    <item name="kg">Kilogram (kg)</item>
    <item name="lb">Pound (lb)</item>
</string-array>
<string-array name="weight_values">
    <item name="kg">kg</item>
    <item name="lb">lb</item>
</string-array>
<string-array name="distance">
    <item name="km">Kilometer (km)</item>
    <item name="mi">Mile (mi)</item>
</string-array>
<string-array name="distance_values">
    <item name="km">km</item>
    <item name="mi">mi</item>
</string-array>
</resources>

1 Ответ

2 голосов
/ 27 февраля 2011

Ваш синтаксис ключа недействителен. Использование:

android:key="weight"
...