Android 没有设置默认值

Android no set default values

我按照所有 the instructions for setting default preference values 一步一步来,但还是不行。

1º 我设置默认值:

<PreferenceCategory android:title="@string/settings_game" >
    <ListPreference
        android:defaultValue="1.5"
        android:entries="@array/intervale_count"
        android:entryValues="@array/intervale_count_values"
        android:key="interval"
        android:title="@string/interval" />
    <ListPreference
        android:defaultValue="@string/mode_normal"
        android:entries="@array/mode_game"
        android:entryValues="@array/mode_game_values"
        android:key="mode"
        android:title="@string/mode" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_sound" >
    <ListPreference
        android:defaultValue="@string/stone"
        android:entries="@array/time_sounds"
        android:entryValues="@array/time_sounds_values"
        android:key="time_sounds"
        android:title="@string/sounds_stones" />
    <ListPreference
        android:defaultValue="@string/vuvucela"
        android:entries="@array/gong_sounds"
        android:entryValues="@array/gong_sounds_values"
        android:key="gong_sounds"
        android:title="@string/sounds_gong" />
</PreferenceCategory>

2º 我在 MainActivity:

中得到了偏好
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
    SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
} 

但是当我打开首选项视图时没有选择首选项,我在 android:defaultValue 中声明的字符串与我在 android:entries 中的数据数组中的选项之一相同。

注意:我尝试将

中的布尔值改为true
PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 

但还是不行。

我也试过卸载和删除应用程序的数据,但仍然不起作用。

编辑:数组值

<string-array name="intervale_count">
    <item>1</item>
    <item>1.3</item>
    <item>1.5</item>
    <item>1.7</item>
    <item>2</item>
</string-array>
<string-array name="intervale_count_values">
    <item>1000</item>
    <item>1300</item>
    <item>1500</item>
    <item>1700</item>
    <item>2000</item>
</string-array>
<string-array name="mode_game">
    <item>@string/mode_normal</item>
    <item>@string/mode_extension</item>
    <item>@string/mode_infinite</item>
</string-array>
<string-array name="mode_game_values">
    <item>100</item>
    <item>50</item>
    <item>1000</item>
</string-array>
<string-array name="time_sounds">
    <item>@string/alan</item>
    <item>@string/cash_reg</item>
    <item>@string/censure</item>
    <item>@string/crow</item>
    <item>@string/doh</item>
    <item>@string/fb_noti</item>
    <item>@string/achievement</item>
    <item>@string/metal_gear</item>
    <item>@string/duck</item>
    <item>@string/pan</item>
    <item>@string/drum</item>
    <item>@string/stone</item>

</string-array>
   <string-array name="time_sounds_values">
    <item>2131099648</item> <!-- Alan -->
    <item>2131099649</item> <!-- Registradora -->
    <item>2131099650</item> <!-- Censura -->
    <item>2131099651</item> <!-- Cuervo -->
    <item>2131099652</item> <!-- DOh -->
    <item>2131099653</item> <!-- FB -->
    <item>2131099655</item> <!-- logro -->
    <item>2131099656</item> <!--metal gear  -->
    <item>2131099657</item> <!-- pato -->
    <item>2131099658</item><!-- sarten -->
    <item>2131099660</item> <!-- tambor -->
    <item>2131099659</item><!-- stone -->
</string-array>
<string-array name="gong_sounds">
    <item>@string/gong</item>
    <item>@string/vuvucela</item>
</string-array>
<string-array name="gong_sounds_values">
    <item>2131099654</item> <!--  Gong -->
    <item>2131099661</item> <!-- Vuvucela -->
</string-array>

ListPreferencedefaultValue 属性需要是一个值,而不是条目文本。换句话说,它应该是您传递给 android:entryValues 的数组中的一个元素,而不是您传递给 android:entries.

的数组中的一个元素

例如,您的锣声偏好应该使用 android:defaultValue="2131099661" 而不是 android:defaultValue="@string/vuvucela"

如果不起作用,请尝试从 emulator/device 中擦除应用数据,然后重新安装该应用。在我的项目中这样做并遵循 Tanis 的提示后,它就像一个魅力。