Массив POJOs, не сохраняемый на всех общих ссылках устройств

#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(). Хотя не уверен, почему это работает.