как сделать кнопку ссылки на результат (video_title) из sql db, чтобы показать video_link?

Эта «проблема» документирована на SharedPreferences.getStringSet .

SharedPreferences.getStringSet возвращает ссылку на сохраненный объект HashSet внутри SharedPreferences. Когда вы добавляете элементы к этому объекту, они фактически добавляются внутри SharedPreferences.

Это нормально, но проблема возникает, когда вы пытаетесь его сохранить: Android сравнивает модифицированный HashSet, который вы пытаетесь для сохранения с помощью SharedPreferences.Editor.putStringSet с текущим, сохраненным на SharedPreference, и оба являются одним и тем же объектом !!!

Возможное решение состоит в том, чтобы сделать копию Set, возвращенную SharedPreferences:

Set s = new HashSet(sharedPrefs.getStringSet("key", new HashSet()));

Это делает s другим объектом, а строки, добавленные в s, не будут добавлены в набор, сохраненный внутри SharedPreferences.

Другим обходным решением, которое будет работать, является использование одной и той же транзакции SharedPreferences.Editor для хранения другого более простого предпочтения (например, целочисленного или логического), единственное, что вам нужно, это заставить, чтобы хранимое значение отличалось для каждой транзакции (например, вы можете сохранить размер набора строк).

0
задан Kwanhee Hwang 5 March 2019 в 05:39
поделиться