POJO 的 ArrayList 未保存在所有设备共享首选项上

ArrayList of POJOs not saving on all device sharedpreferences

我正在制作一个简单的预算应用程序,我的应用程序中有一个名为 budgetLedger 的 POJO,它看起来像这样:

import java.io.Serializable;

public class budgetDateAndTime implements Serializable {
    int hour, minute, year, month, day;
    double amount;

    public budgetDateAndTime(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;
    }

 .....

以及一些 getter 和 setter。我制作了这些的 ArrayList 并试图让它们保存在 SharedPreferences 中。问题是它在我的 phone(Samsung Galaxy Note 9)上保存,但在其他 phone 上似乎没有保存,而且在 AndroidStudio 模拟器中也没有保存。以下是我保存和加载 ArrayList 的方法:

public static final String LEDGER_PREFS = "LEDGER_PREF";
public static final String NAME_OF_LED = "ledger";

public void saveLedger() {
    SharedPreferences sharedPref = getActivity().getSharedPreferences(LEDGER_PREFS, getContext().MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    Gson gson = new Gson();
    String json = gson.toJson(budgetLedgerList);
    editor.putString(NAME_OF_LED, json);
    editor.apply();
}

public ArrayList<budgetDateAndTime> getLedger() {
    SharedPreferences sharedPref = getActivity().getSharedPreferences(LEDGER_PREFS, getContext().MODE_PRIVATE);
    Gson gson = new Gson();
    String json = sharedPref.getString(NAME_OF_LED, null);
    Log.d("BTAG", "json in getledger: " + json);
    Type type = new TypeToken<ArrayList<budgetDateAndTime>>() {}.getType();
    ArrayList<budgetDateAndTime> theList = gson.fromJson(json, type);
    return theList;
}

我只在 onDestroy() 中调用了 saveLedger(),并且我只在 onCreate() 中将 getLedger() 分配给一个 ArrayList 变量。同样,它适用于我的 phone,但不适用于我尝试过的任何其他 phone。有人知道为什么会这样吗?日志显示当应用程序关闭或 phone 重新启动时 json 为空,因此这不是显示问题。任何帮助将不胜感激!

我通过在 onPause() 中调用 saveLedger() 修复了它。不确定为什么会起作用。