如何将ListPreference初始化为其值之一

我试图设置一个ListPreference项目的defaultValue。

以下是我的preference.xml文件的示例:

<ListPreference android:key="notification_delay" android:title="@string/settings_push_delay" android:entries="@array/settings_push_delay_human_value" android:entryValues="@array/settings_push_delay_phone_value" android:defaultValue="????"> </ListPreference> 

这两个数组:

 <string-array name="settings_push_delay_human_value"> <item>every 5 minutes</item> <item>every 10 minutes</item> <item>every 15 minutes</item> </string-array> <string-array name="settings_push_delay_phone_value"> <item>300</item> <item>600</item> <item>900</item> </string-array> 

当我进入首选项活动时,没有selectListPreference的项目。 我已经尝试在“android:defaultValue”中设置一个像int值1来select“10分钟”,但它不起作用。

 <ListPreference android:key="notification_delay" android:title="@string/settings_push_delay" android:entries="@array/settings_push_delay_human_value" android:entryValues="@array/settings_push_delay_phone_value" android:defaultValue="1"> </ListPreference> 

任何想法?

您需要指定 。 所以要得到默认选中的第一个条目,在你的例子中指定defaultValue="300"

发生在相同的情况。 指定一致的默认值。 但graphics没有被选中。 我清除了应用程序数据。 然后它按预期工作。 因此,在添加新的XxxPreference项目时,在开发时可能很有用。

除了Sven的回答之外,您还必须在开始活动中调用setDefaultValues()方法。 这将设置一次所有的默认值。

 public class MainActivity extends Activity { protected void onCreate(final Bundle savedInstanceState) { // Set all default values once for this application // This must be done in the 'Main' first activity PreferenceManager.setDefaultValues(this, R.xml.preferences, false); ... } } 

如果它是来自列表的有效值,则重新安装该应用程序。 它会工作。