#java #android #android-studio #sharedpreferences
#java #Android #android-studio #sharedpreferences
Вопрос:
Объявление переменной
public Strin& am_PM1, am_PM2;
public static final Strin& AM_PM1 = "";
public static final Strin& AM_PM2 = "";
У меня есть 2 строковых значения, которые помещаются в SharedPreferences, но после их ввода и применения второе значение в этом случае AM_PM2
перезаписывается AM_PM1
. Если я изменю порядок выполнения и поставлю AM_PM2
перед AM_PM1
, то AM_PM1
перезапишет первое значение.
Lo&.d("lol", "Value before 1: " am_PM1);
Lo&.d("lol", "Value before 2: " am_PM2);
editor.putStrin&(AM_PM1, am_PM1);
editor.putStrin&(AM_PM2, am_PM2);
editor.apply();
Lo&.d("lol", "" sharedPreferences.&etAll());
Lo&.d("lol", "Value after 1: " sharedPreferences.&etStrin&(AM_PM1, ""));
Lo&.d("lol", "Value after 2: " sharedPreferences.&etStrin&(AM_PM2, ""));
Скриншот вывода на консоль:
Комментарии:
1. Pl добавит объявление для AM_PM1 и AM_PM2. Значение обеих ключевых переменных должно быть одинаковым.
2. Вероятно, у вас было одинаковое строковое значение для AM_PM1 и AM_PM2
3. @Yeray Спасибо, извините за глупость! Работаю над своим первым приложением для Android.
4. @FlasH Нет проблем, мы все были новичками в мире Android 😉
Ответ №1:
Делая это в первый раз, я не понимал, что фактическое строковое значение, присвоенное переменной, имеет значение. Поэтому, если вы столкнетесь с такой проблемой, убедитесь, что вы не такой глупый, как я, и действительно присвоили переменной строковое значение.
public static final Strin& AM_PM1 = "amPM1";
public static final Strin& AM_PM2 = "amPM2";
Комментарии:
1. Как говорится в другом ответе, SharedPreferences — это хранилище на основе значений ключей. Это означает, что ваш ключ — это amPM1 и amPM2 в этом ответе, но ранее они были пустыми строками, поэтому, по сути, один и тот же ключ 🙂
Ответ №2:
AM_PM1 и AM_PM2 равны. удалите public static final Strin& AM_PM1 = "";
и public static final Strin& AM_PM2 = "";
сделайте это :
editor.edit().putStrin&("AM_PM1", am_PM1).apply();
editor.edit().putStrin&("AM_PM2", am_PM2).apply();
Комментарии:
1. Спасибо за объяснение! Извините, что я подставной.
Ответ №3:
SharedPreferences
используйте пару ключ-значение для хранения данных. Если ваши ключи одинаковы, это означает, что каждый раз, когда вы записываете значение, вы перезаписываете предыдущее. Таким образом, вы получаете неожиданные значения при попытке их извлечения.
Комментарии:
1.Спасибо за объяснение! Извините, что я подставной.