Android指南现在设计手机和平板电脑的设置,使用碎片为不同的类别/设置组 Android Studio创建的SettingsActivity为每个设置片段创建一个XML文件:
pref_general.xml
pref_notifications.xml
那么如何使用方法setDefaultValues(context,resId,readAgain)
来创建第一个共享首选项文件?
如果您在MainACtivity
PreferenceManager.setDefaultValues(this, R.xml.pref_general, false);
PreferenceManager.setDefaultValues(this, R.xml.pref_notifications, false);
只有第一行才会创建共享首选项文件,只有在该片段上定义的设置
第二行将不会被执行(因为readAgain
参数为false,并且该方法已在第一行执行)
另一方面,将readAgain
设置为true
每次都会执行setDefaultValues
。
答案 0 :(得分:0)
您可以在Xml文件中使用android:defaultValue
。
android:defaultValue
:首选项的默认值,即
如果持久性已关闭或持久性已启用且具有首选项,则设置
在持久存储中找不到。
<SwitchPreferenceCompat
android:key="key1"
android:title="Switch Preference"
android:summary="Switch Summary"
android:defaultValue="true" />
或者以编程方式可以这样做:
//this returns whatever preference was set for key1 in PreferencesPage
or the default value if nothing was set
sharedPreferences.getBoolean("key1", true));
答案 1 :(得分:0)
这是import reactDOM from 'react-dom';
reactDOM.render(<Parent />, document.getElementById("app"));
尚未解决的问题,其中,只有在setDefaultValues()
时才调用一次此方法。
调用该方法时,Android系统存储键readAgain = false
并将其值设置为true。 (More info on this key here)
现在,如果您拥有多个XML资源,这将成为问题,因为密钥并不特定于每个单独的XML资源。
由于我们无法修改密钥KEY_HAS_SET_DEFAULT_VALUES
,因此必须将KEY_HAS_SET_DEFAULT_VALUES
设置为true并存储自己的密钥对,以指示是否设置了默认值。
readAgain
其中// Some generic code
if (firstTimeOpen) {
PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.pref_general, true);
PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.pref_advanced, true);
PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.pref_notifications, true);
}
是一些布尔值,指示是否所有的sharedprefs都已经初始化。