2013-03-25 1410 views
8

我有一个开关的偏好,并希望它被默认为“ON” ...... 在XML,Android switchpreference如何设置开关首选项默认值?

<SwitchPreference 
     android:defaultValue="true" 
     android:key="PromoNotificationOnOff" 
     android:title="@string/Snotification_enable" /> 

,并在课堂上,

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Load the preferences from an XML resource 
    addPreferencesFromResource(R.xml.settings); 


} 

为什么不工作?什么不见​​了?谢谢!!

回答

9

在你MainActivity onCreate方法添加此行

PreferenceManager.setDefaultValues(this, R.xml.settings, false); 

您可以在http://developer.android.com/reference/android/preference/PreferenceManager.html#setDefaultValues(android.content.Context,整型,布尔读到它)

+3

的XML “机器人:默认值” 标签是绝对正确的。在代码中更新值(覆盖它)是多余的,如果两者都留在原地,可能会导致混淆。 但是,在调试此代码时,首选项的“默认值”通常不会执行,直到Android设置中的应用程序数据被清除。 – gtcompscientist 2014-03-21 11:50:40

+0

@gtcompscientist在您评论和投票之前,您应该阅读参考链接。如果这太麻烦了,那么你至少应该阅读setDefaultValues()的文档来知道参数代表什么。在我提供的解决方案中更新xml中设置的值的位置?如果知道方法setDefaultValues()是什么,我提供的解决方案是绝对正确和清晰的。 – 2014-03-21 19:14:45