【问题标题】:PreferenceActivity MultiSelectListPreference uncheck allPreferenceActivity MultiSelectListPreference 取消选中所有
【发布时间】:2013-11-14 09:25:03
【问题描述】:

当我第一次打开 MultiSelectListPreference 或取消选中所有复选框并重新打开 MultiSelectListPreference 时,所有项目都显示为选中状态。

我需要取消选中上述情况下的所有复选框。

我该如何解决这个问题?

settings.xml

   <MultiSelectListPreference
        android:entries="@array/pref_color_list_titles"
        android:entryValues="@array/pref_color_list_values"
        android:key="prefColor"
        android:summary="@string/pref_color_summary"
        android:title="@string/pref_color_title" >
    </MultiSelectListPreference>

strings.xml

    <string-array name="pref_color_list_titles">
        <item>Red</item>
        <item>Green</item>
        <item>Blue</item>
    </string-array>

    <string-array name="pref_color_list_values">
        <item>r</item>
        <item>g</item>
        <item>b</item>
    </string-array>

SettingsActivity.java

public class SettingsActivity extends PreferenceActivity {

    @SuppressWarnings("deprecation")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.settings);    
    }    
}

【问题讨论】:

  • 能否提供更多代码,例如用于显示活动的 java 代码等...?
  • @k3v1n4ud3 问题已更新。
  • 您可以添加“android:defaultValue=''”,然后指定您想要的默认值。您可能还想使用 sharedPreferences 来保留您的选择。

标签: android multiselectlistpreference


【解决方案1】:

您只需将空 Set 传递给 MultiSelectListPreference

Set<String> uncheckValues = new HashSet<>();
myMultiSelectListPreference.setValues(uncheckValues);

如果你想检查所有值,你可以这样做

String[] defaultValuesAsArray = getResources().getStringArray(R.array.default_values_multiselectlist_pref);
Set<String> defaultValues = new HashSet<>(Arrays.asList(defaultValuesAsArray)); //convert array to set
myMultiSelectListPreference.setValues(defaultValues);

【讨论】:

    猜你喜欢
    • 2013-11-16
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    相关资源
    最近更新 更多