I SharedPreference trying to get data from SharedPreference whole pack by key, but I cannot convert the result to String[]

 java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Set 


 String[] codeValues; 

I do this:

 private void loadCode() { preferences = getPreferences(MODE_PRIVATE); Set<String> codes = preferences.getStringSet("codes", new HashSet<String>()); codeValues = codes.toArray(new String[codes.size()]); Toast.makeText(this, "Text loaded", Toast.LENGTH_SHORT).show(); } 

Tried it like this:

 private void loadCode() { preferences = getPreferences(MODE_PRIVATE); Set<String> codes = preferences.getStringSet("codes", new HashSet<String>() { @Override public int size() { return 0; } @Override public boolean isEmpty() { return false; } @Override public boolean contains(Object o) { return false; } @NonNull @Override public Iterator<String> iterator() { return null; } @NonNull @Override public Object[] toArray() { return new Object[0]; } @NonNull @Override public <T> T[] toArray(T[] a) { return null; } @Override public boolean add(String s) { return false; } @Override public boolean remove(Object o) { return false; } @Override public boolean containsAll(Collection<?> c) { return false; } @Override public boolean addAll(Collection<? extends String> c) { return false; } @Override public boolean retainAll(Collection<?> c) { return false; } @Override public boolean removeAll(Collection<?> c) { return false; } @Override public void clear() { } }); codeValues = codes.toArray(new String[codes.size()]); Toast.makeText(this, "Text loaded", Toast.LENGTH_SHORT).show(); } 

    1 answer 1

    I will assume that in your SharedPreference on this key not a set is recorded, but something else. The error appears, apparently, at the time of the extraction of the set.

    • yes, I already understood it myself, I write down the usual String - tCode
    • @tCode then you should accept the answer if it is correct - zTrap