All*_*lan 10 android android-preferences
我在我的应用程序中有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");
Run Code Online (Sandbox Code Playgroud)
在执行上述代码之后,每个变量都包含"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"/>
Run Code Online (Sandbox Code Playgroud)
这是我的一些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>
Run Code Online (Sandbox Code Playgroud)
当我进入菜单,然后进行设置时,我可以看到我的默认选项(radiobuttoned).然后,当我从设置菜单返回主屏幕时 - 一切都很好 - 终身!...然后为上面的每个var分配正确的默认值.
这只发生在我第一次在手机上安装我的应用程序时.在我进入设置屏幕一次然后立即退出之后,该应用程序很好并接受任何设置更改.
顺便说一下,正如您所看到的,"List1"是我的res/xml文件夹中名为settings.xml的文件中的android:key.
Com*_*are 22
安装后它们似乎没有设置为默认值 - 它们似乎为空.
这就是应该发生的事情.
我试图找出为什么我的默认首选项没有在安装后立即设置.
他们不应该是.您在此处列出的首选项XML仅用于填充a PreferenceActivity
,仅此而已.在用户打开之前PreferenceActivity
,首选项将为null,并且SharedPreferences
将返回您提供给getter 的默认值.
UPDATE
您可以使用setDefaultValues()
on PreferenceManager
将您的首选项XML的默认值分配给a SharedPreferences
.但是,要小心时间 - 这将执行磁盘I/O,因此理想情况下是在后台线程上执行.
Arv*_*vis 10
从您的首选项XML中将默认值设置为SharedPreferences.
PreferenceManager.setDefaultValues(Context context, int resourceId, boolean readAgain)
Run Code Online (Sandbox Code Playgroud)
PreferenceManager.setDefaultValues
归档时间: |
|
查看次数: |
8391 次 |
最近记录: |