MultiSelectListPreference получить проверенные значения?
Привет, парень, я хотел бы сделать простое приложение для чтения новостей. в общих настройках пользователь может выбрать, какие разделы новостей он может видеть. Я дошел до точки, чтобы добавить MultiSelectListPreference и получить значения th. Но, к сожалению, он возвращает все значения, а не только проверенные.
Вот мой код:
<MultiSelectListPreference
android:id="@+id/multiple_choice"
android:dialogTitle="@string/section_news_label"
android:entries="@array/news_sections"
android:entryValues="@array/section_values"
android:key="section_news_key"
android:summary="@string/section_hint"
android:defaultValue="@array/default_array"
/>
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
}
public static class NewsPreferenceFragment extends PreferenceFragment
implements Preference.OnPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings_main);
Preference newsToShow = findPreference(getString(R.string.settings_news_show_key));
bindPreferenceSummaryToValue(newsToShow);
}
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
String stringValue = value.toString();
preference.setSummary(stringValue);
return true;
}
private void bindPreferenceSummaryToValue(Preference preference) {
preference.setOnPreferenceChangeListener(this);
SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(preference.getContext());
String preferenceString = preferences.getString(preference.getKey(), "");
onPreferenceChange(preference, preferenceString);
}
}
}
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
Set<String> entries = sharedPrefs.getStringSet("section_news_key", null);
if(entries == null){
Log.v("!!!!!!!!!", "No entries");
}else {
Log.v("!!!!!!!!!", entries.toString());
}
Есть идеи, что я делаю не так?
1 ответ
Решение
Спасибо, я нашел Solition, которая отлично работает. Нужно использовать HashSet.
//Get entries from news sections and store in Set
Set<String> entries = sharedPrefs.getStringSet("section_news_key", new HashSet<String>());