如何获取在XML中定义的Android偏好设置的默认值?我不想在代码和XML文件中都重复定义默认值。
如何获取在XML中定义的Android偏好设置的默认值?我不想在代码和XML文件中都重复定义默认值。
你可以在资源文件 (/values/bool.xml
) 中定义默认值:
<resources>
<bool name="mypreference_default">true</bool>
</resources>
使用 preferences.xml
中的值:
<CheckBoxPreference
android:defaultValue="@bool/mypreference_default"
android:key="mypreference"
android:title="@string/mypreference_title" />
然后在代码中使用:
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context);
Boolean value = context.getResources().getBoolean(R.bool.mypreference_default);
Boolean b = p.getBoolean("mypreference", value);
strings.xml
文件名只是一种约定。通过将任何资源放置在正确的 res/
子文件夹中,即可对其进行本地化。虽然将默认设置放入单独的资源文件中可能是一个好主意。 - Alex MDC首先,您需要在偏好设置的XML文件中定义默认值。然后,通过调用以下方法,在您的主Activity中使用默认值填充偏好设置:
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
当你需要检索某个偏好设置时,只需调用:
int value = prefs.getInt("key", null);
由于您的首选项已填充,因此您不会得到null
值。
true
作为最后一个参数调用PreferenceManager.setDefaultValues
。事实上,如果您有多个首选项文件,则这对于第二个文件的加载至关重要。在主活动中对所有首选项文件调用PreferenceManager.setDefaultValues
。 - zelanixsetDefaultValues
方法的组合。 - LimethPreferenceManager.setDefaultValues(this, R.xml.preference, true);
移动到根活动(MainActivity
)的onCreate
中。 - Alex Martianres/values
下创建 integer.xml
以存储整数常量。preferences.xml
中引用 "@integer/default_brightness"
。context.getResources().getInteger(R.integer.default_brightness)
。