如何设置默认值 ListPreference

我需要设置值 defult 为了 A ListPreference, 行动开始时。
我尝试过。
ListPreference.setDefaultvalue/"value"/;

, 但这使得第一个记录默认列表。 我需要它,因为我必须检查条件并确定满足此条件的默认值,所以我认为它无法从文件中完成 xml /从
android:defaultValue

/

例如,假设我有这个值阵列 arrays.xml:


<string-array name="opts">
<item>red</item>
<item>green</item>
<item>blue</item>
</string-array>
<string-array name="opts_values">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>


在 PreferenceScreen xml:


<listpreference android:entries="@array/opts" android:entryvalues="@array/opts_values" android:key="colour" android:summary="Select your favourite" android:title="Colour select"></listpreference>


在这项活动中,我想做这样的事情:


String mycolour;
if /something/ {
mycolour="1";
} else {
mycolour="2";
}
ListPreference colour = /ListPreference/ findPreference /"colour"/;
colour.setDefaultValue/mycolour/;


但它不起作用,因为它默认成为第一选择。 你能解释一下我如何默认做另一个? 谢。
已邀请:

江南孤鹜

赞同来自:

您不需要以编程方式处理默认值。
ListPreferences

. 您可以在设置文件中执行此操作。 xml. 以下是一个例子


<string-array name="opts">
<item>red</item>
<item>green</item>
<item>blue</item>
</string-array>
<string-array name="opts_values">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>


...


<listpreference android:defaultvalue="2" android:entries="@array/opts" android:entryvalues="@array/opts_values" android:key="colour" android:summary="Select your favourite" android:title="Colour select"></listpreference>


在这里我选择了
2

作为默认值。 记住,那个
defaultvalue

将是元素
opts_values

.

风见雨下

赞同来自:

你试过:


setValueIndex/int index/;

江南孤鹜

赞同来自:

对不起,我的英语不好。

列表元素

获取列表检查值是否相等 null. 如果他是平等的 null, 设置默认值。

代码

:


ListPreference dataPref = /ListPreference/ findPreference/"keyList"/;

if/dataPref.getValue// == null/{
dataPref.setValueIndex/0/; //set to index of your deafult value
}

郭文康

赞同来自:

您可以使用这样的密钥设置默认值。


<string-array name="syncFrequency">
<item name="1">Block All Calls</item>
<item name="2">Block Black List</item>
<item name="3">Block Unknown Calls</item>
<item name="4">Allow White List</item>
<item name="5">Receive All Calls</item>
</string-array>
<string-array name="syncFrequencyValues">
<item name="1">Block_All_Calls</item>
<item name="2">Block_Black_List</item>
<item name="3">Block_Unknown_Calls</item>
<item name="4">Allow_White_List</item>
<item name="5">Receive_All_Calls</item>
</string-array>
<listpreference android:defaultvalue="Block_Black_List" android:entries="@array/syncFrequency" android:entryvalues="@array/syncFrequencyValues" android:key="prefSyncFrequency" android:summary="%s" android:title="@string/call_block_options"></listpreference>

知食

赞同来自:

或者你也可以尝试
colour.setValue/mycolour/;

三叔

赞同来自:

如果有人有这个问题,只需协议

:


setValueIndex/int X/

设置值 @ index X 默认 - 以便

这是,

大概

, 你要买什么

.

设置此值

AFTER

您添加了值!

/愚蠢的错误,但我花了半个小时

/

裸奔

赞同来自:

//ListPreference/ findPreference/"pref_language"//.setValue/Locale
.getDefault//.getLanguage///;



setValue//

- 这种方法 ListPreference, 和
setDefaultvalue

- 方法偏爱

小明明

赞同来自:

事实上,这是因为 SharedPreferences 重新创建应用程序后,它将保存。
删除它并再试一次。

卫东

赞同来自:

这是一个旧的帖子,但这是设置默认值的另一种方法
ListPreference

使用下一行代码:


PreferenceManager.setDefaultValues/getActivity//, R.xml.preferences, false/;

君笑尘

赞同来自:

使用属性 xml
android:defaultValue="<value>"

在列表的标记中设置默认值。

笔记:
<value>

- 这是实际值,而不是字符串的索引
大批。

如果它仍然不起作用,请尝试以下步骤。

清洁应用数据。

删除并重新安装应用程序

检查列表首选项,您将看到所选的默认值。

奇怪,我知道,但在我的情况下它的工作。
</value></value>

要回复问题请先登录注册