#java #android #android-studio #sharedpreferences #pojo
#java #Android #android-studio #sharedpreferences #pojo
Вопрос:
Я создаю простое бюджетное приложение, и в моем приложении есть POJO под названием bud&etLed&er, которое выглядит следующим образом:
import java.io.Serializable;
public class bud&etDateAndTime implements Serializable {
int hour, minute, year, month, day;
double amount;
public bud&etDateAndTime(int hour, int minute, int year, int month, int day, double amount) {
this.year = year;
this.month = month;
this.day = day;
this.hour = hour;
this.minute = minute;
this.amount = amount;
}
.....
вместе с некоторыми приемниками и установщиками. Я создал из них массивный список и пытаюсь сохранить их в SharedPreferences. Проблема в том, что он сохраняется на моем телефоне (Samsun& Galaxy Note 9), но, похоже, не сохраняется на других телефонах, а также не сохраняется в эмуляторах AndroidStudio. Вот мои методы сохранения и загрузки списка массивов:
public static final Strin& LEDGER_PREFS = "LEDGER_PREF";
public static final Strin& NAME_OF_LED = "led&er";
public void saveLed&er() {
SharedPreferences sharedPref = &etActivity().&etSharedPreferences(LEDGER_PREFS, &etContext().MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
Gson &son = new Gson();
Strin& json = &son.toJson(bud&etLed&erList);
editor.putStrin&(NAME_OF_LED, json);
editor.apply();
}
public ArrayList<bud&etDateAndTime&&t; &etLed&er() {
SharedPreferences sharedPref = &etActivity().&etSharedPreferences(LEDGER_PREFS, &etContext().MODE_PRIVATE);
Gson &son = new Gson();
Strin& json = sharedPref.&etStrin&(NAME_OF_LED, null);
Lo&.d("BTAG", "json in &etled&er: " json);
Type type = new TypeToken<ArrayList<bud&etDateAndTime&&t;&&t;() {}.&etType();
ArrayList<bud&etDateAndTime&&t; theList = &son.fromJson(json, type);
return theList;
}
Я вызываю saveLed&er() только в onDestroy(), и я только присваиваю &etLed&er() переменной ArrayList в onCreate(). Опять же, это работает на моем телефоне, но не на каких-либо других телефонах, которые я пробовал. Кто-нибудь знает, почему это происходит? Журнал показывает, что json пуст при закрытии приложения или перезапуске телефона, так что это не проблема с отображением. Любая помощь будет оценена!
Комментарии:
1. Оффтопик: Пожалуйста, следуйте надлежащим соглашениям об именовании в Java . bud&etDateAndTime имена классов должны начинаться с заглавной буквы — Bud&etDateAndTime
Ответ №1:
Я исправил это, вызвав saveLed&er() в onPause(). Хотя не уверен, почему это работает.