Кодовое имя один: Исключение EOF из хранилища и нулевой точки

#codenameone

#codenameone

Вопрос:

У меня возникли проблемы с сохранением списков в хранилище и последующей загрузкой его после нового запуска моего приложения. Вот что я сделал:

При каждом запуске приложения я делаю это, чтобы проверить, были ли данные уже записаны в хранилище, если нет, я возвращаю новый список.

 public List loadSavedFormationList(){
        String[] temp = Storage.getInstance().listEntries();
        for(String s: temp){
            if(s.equals("Formations") == true){
                return (LinkedList<SongList>)Storage.getInstance().readObject("Formations");
            }
        }
        return new LinkedList<SongList>();
}
  

Когда пользователь вводит FormationList в моем приложении, я делаю это, чтобы сохранить его в хранилище:

 Storage.getInstance().writeObject("Formations", formationList);
  

Теперь, когда я перезапускаю приложение, я получаю исключение java.io.EOFException java.lang.NullPointerException. Кажется, что он пытается прочитать мой список образований из хранилища, но оно пустое, но почему? При первом запуске приложения хранилище должно быть пустым. Сохраняет ли симулятор также данные, которые я ввел в приложение в другое время?

Спасибо за любой совет.

Ответ №1:

Codename One сохраняет ArrayList not LinkedList и преобразует это неявно. Я предполагаю, что данные не были записаны, поэтому вы получили исключение, вам нужно посмотреть на консоль при записи и убедиться, что все элементы externalizable.