Android没有设置默认值

时间:2015-05-11 15:34:41

标签: android sharedpreferences

我一步一步地跟踪了所有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中声明的字符串是SAME,它是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>

2 个答案:

答案 0 :(得分:1)

defaultValue的{​​{1}}属性需要是值,而不是条目文本。换句话说,它应该是传递给ListPreference的数组中的元素,而不是传递给android:entryValues的数组中的元素。

例如,您的锣音首选项应使用android:entries代替android:defaultValue="2131099661"

答案 1 :(得分:0)

如果它不起作用,请尝试从模拟器/设备擦除应用程序数据,然后重新安装该应用程序。在我的项目中做到这一点并遵循Tanis提示后,它就像一个魅力。