SharedPreferencesのListから値を編集しようとしていますが、sometingが間違っています。SharedPreferenceのAndroidリスト
マイSharedPreferenceがある:私はでSharedPrefを使用
public class StepsData {
static SharedPreferences data;
static SharedPreferences.Editor editor;
static final int VALUE_KEY = 0;
static final List<String> LIST_KEY= new Vector<String>();
}
:私はVALUE_KEYのすべての値を編集したり、取得したい場合
StepsData.data = getApplicationContext().getSharedPreferences("userData", MODE_PRIVATE);
StepsData.editor = StepsData.data.edit();
はで動作します。
int step = StepsData.data.getInt(String.valueOf(VALUE_KEY), 0);
editor.putInt(String.valueOf(VALUE_KEY), 0).apply();
けどListを使用する際に問題があります。値を取得するためのコードは次のとおりです。
List<String> myList = (List<String>) data.getStringSet(String.valueOf(LIST_KEY),null);
や削除のために:
List<String> clearList = new Vector<String>();
editor.putStringSet(String.valueOf(LIST_KEY), (Set<String>) clearList).apply();
が、NullPointerExceptionがあります。 SharedPreferenceからのListに ".clear()"のようなものを使用する最良の方法は何ですか?また、このリストとサイズから値を取得する方法はありますか?
コードにはいくつか問題があります。まず、 'LIST_KEY'は' List'ではなく 'String'である必要があります。第二に、共有設定は 'Set'を 'List 'ではなく受け付けます。しかし、 'Set'を使って' List'をインスタンス化することもできますし、その逆も可能です。 'リスト stringList =新しいArrayList <>(yourStringSet); stringSet =新しいTreeSet <>(yourStringList) 'を設定します。リストに重複が含まれている場合は、ユニークに減らすことができます。 –