Мое приложение позволяет пользователю добавлять изображения и тексты в представление. Итак, теперь я хочу сохранить фрагменты, чтобы они могли позже внести в него поправки и настроить его дальше. Однако я не могу найти способ сохранить список фрагментов. Я пытался:
ArrayList<FlashcardsTemplateActivity> FlashCards = new ArrayList<FlashcardsTemplateActivity>();
public void Save() {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(FlashCards);
byte[] bytes = bos.toByteArray();
} catch (IOException ex) {
Log.d("Error! Failed!", "Save: Failed");
Log.d("Error! Failed!", ex.getMessage());
Log.d("Error! Failed!", ex.toString());
}
}
Однако это вызывает исключение java.io.NonSerializableException.
Заранее спасибо.




Вы не можете сделать это описанным способом. Вам нужны промежуточные объекты для сохранения и чтения из базы данных или другого уровня сохраняемости. Вот отправная точка, как вы можете сохранять объекты в БД: Сохранение данных в локальной базе данных с помощью Room
Это не так просто, как просто записать массив, содержащий некоторые представления, в поток. Сначала вам нужно будет преобразовать эти представления в любой формат, который вы предпочитаете, и который может быть сохранен в файле. Можно было бы преобразовать их в JSON, XML или обычный текст - вы также можете создать необработанный двоичный файл представлений. При их чтении вам понадобится синтаксический анализатор, который анализирует объекты, воссоздает представления и добавляет их в макет. Если изображения содержат пользовательские растровые изображения, вам также придется хранить растровые изображения внутри этого файла.