在Android Studio中使用ListPreference

时间:2015-03-01 20:00:31

标签: android android-activity android-studio android-preferences

我有一个设置菜单,其中包含Android Studio中示例设置活动的列表首选项。

 <ListPreference
    android:key="example_list"
    android:title="@string/pref_title_add_friends_to_messages"
    android:defaultValue="5"
    android:entries="@array/pref_example_list_titles"
    android:entryValues="@array/pref_example_list_values"
    android:negativeButtonText="@null"
    android:positiveButtonText="@null" />

在此列表首选项中,您可以选择8种不同的内容。

  <string name="pref_title_add_friends_to_messages">Klasse</string>
<string-array name="pref_example_list_titles">
    <item>5</item>
    <item>6</item>
    <item>7</item>
    <item>8</item>
    <item>9</item>
    <item>10</item>
    <item>11</item>
    <item>12</item>
</string-array>
<string-array name="pref_example_list_values">
    <item>5</item>
    <item>6</item>
    <item>7</item>
    <item>8</item>
    <item>9</item>
    <item>10</item>
    <item>11</item>
    <item>12</item>
</string-array>

我想使用首选项的值来显示属于8种不同设置的链接。

E.g:

5 - google.com

6 - wikipedia.com

作为初学者,我如何获取我的偏好值以及如何将值分配给链接并将它们放在一个变量中,这个变量在更改首选项时会发生变化?

2 个答案:

答案 0 :(得分:1)

您可以像这样获得您的偏好值:

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String value = sharedPref.getString("example_list", "default value");

我不明白你的其余问题。什么

  

如何将值分配给链接并将它们放在一个变量中,这个变量在更改首选项时会发生变化?   意思?

另外,我在偏好设置上找到the documentation非常有帮助。

答案 1 :(得分:1)

<string-array name="pref_example_list_values">将用作ListPreference中的值。要获取当前值,请使用:

ListPreference lp = (ListPreference) findPreference("example_list");
String currentValue = lp.getValue();

要获取值并将其显示在文本中,请设置TextView并设置文字:

/* You might create 'if' statement for 8 times because of there are 8 different value in the ListPreference*/

TextView tv = (TextView) findViewById(R.id.textview1);

if (currentValue.equals("5")) {
// do your thing here, i.e. google.com
tv.setText("Welcome, 5!");
}
if (currentValue.equals("6")) {
// do your thing here, i.e. wikipedia.com
tv.setText("Welcome, 6!");
}