我的应用中有Listpreferences。安装后它们似乎没有设置为默认值 - 它们似乎为空。我试图找出为什么我的默认首选项没有在安装后立即设置。在我的主要代码中,我有:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
InUnits = sp.getString("List1", "defValue");
InAngs = sp.getString("List2", "defValue");
OutUnits = sp.getString("List3", "defValue");
OutAngs = sp.getString("List4", "defValue");
在执行上述代码之后,每个变量都包含“defValue”,而不是我在下面的ListPreference中指定的实际值。
我的首选项xml文件名为“settings.xml”。以下是其中一个ListPreferences:
<ListPreference
android:key="List1"
android:title="Input: Alph"
android:summary="Choose Alph or Ralph"
android:entries="@array/inputAlph"
android:entryValues="@array/input_Alph_codes"
android:dialogTitle="Input Alph"
android:defaultValue="ININ"/>
以下是我的一些strings.xml文件的样子:
<string-array name="inputUnits">
<item>Alph</item>
<item>Ralph</item>
</string-array>
<string-array name="input_Alph_codes">
<item>ININ</item>
<item>INMM</item>
</string-array>
当我进入菜单,然后进行设置时,我可以看到我的默认选项(radiobuttoned)。然后,当我从设置菜单返回主屏幕时 - 一切都很好 - 终身! ...然后为每个上面的var分配正确的默认值。
这只有在我第一次在手机上安装我的应用时才会发生。在我进入设置屏幕一次然后直接进入设置屏幕后,应用程序就可以了,并接受任何设置更改。
顺便提一下,正如您所看到的,“List1”是我的res / xml文件夹中名为settings.xml的文件中的android:键。
答案 0 :(得分:22)
他们似乎没有设置 他们的默认值就在之后 安装 - 它们似乎是空的。
这就是应该发生的事情。
我想弄清楚为什么我的 默认首选项未设置 安装后即刻。
他们不应该。您在此处列出的首选项XML仅用于填充PreferenceActivity
,仅此而已。在用户打开PreferenceActivity
之前,首选项将为null,并且将返回您提供给SharedPreferences
getter的默认值。
<强>更新强>
您可以使用setDefaultValues()
上的PreferenceManager
将偏好XML中的默认值分配给SharedPreferences
。但是,要小心时间 - 这将执行磁盘I / O,因此理想情况下是在后台线程上执行。
答案 1 :(得分:10)
从您的首选项XML中将默认值设置为SharedPreferences。
PreferenceManager.setDefaultValues(Context context, int resourceId, boolean readAgain)
答案 2 :(得分:-2)
您可以指定默认值
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
pref.getString("thePrefKey", "theDefaultValue");
“layout”settings.xml中的 android:defaultValue =“...”只是用户的视觉帮助