0

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

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

我该如何解决这个问题?

设置.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>

字符串.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);    
    }    
}
4

1 回答 1

2

您只需将空 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);
于 2019-01-28T21:25:22.763 回答