我需要一个办法来拯救一个 ArrayList
物体的数量。我在网站上浏览过类似的问题,我(似乎;-)实现了我的发现,但我有两个问题:
如果我将类定义为 Serializable
把构造器放进去,启动时就崩溃了
否则,它不会保存数组
你能帮忙吗?我正在为一个志愿者的项目开发代码,我被困在。。。
事先非常感谢。
我的应用程序定义了以下类: Globals
(文件globals.java)
public class Globals extends Application implements Serializable {
private int position=-1;
private ArrayList<RaccoltaPunti> raccoltePuntiList = new ArrayList<RaccoltaPunti>();
public static final long serialVersionUID = 1L;
/**constructor - seem required by Serializable, but creating it crashes app */
public Globals(int position, ArrayList<RaccoltaPunti> raccoltePuntiList) {
this.position = position;
this.raccoltePuntiList = raccoltePuntiList;
}
// {getters and setters…}
public void saveData(){
String filename = getResources().getString(R.string.GLB_filename);
String fileWithPath = this.getFilesDir().getPath().toString()+"/"+filename;
Toast.makeText(this, "Salvataggio testo..."+ fileWithPath, Toast.LENGTH_LONG).show();
try {
FileOutputStream fos = new FileOutputStream(fileWithPath);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(this.raccoltePuntiList);
oos.close();
Toast.makeText(Globals.this, "DatiSalvati ", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Log.e("FileSave", "CDM - IOException", e);
Toast.makeText(this, "Errore saving file", Toast.LENGTH_LONG).show();
}
}
}
引用的类是:raccoltapunti.java
public class RaccoltaPunti {
private String nomeRaccolta;
private String nomePromoter;
private String numeroTessera;
private Long puntiPusseduti;
private String dataScadenzaPunti;
private String sitoWeb;
private String sitoWebUsername;
// constructor, getters and setters…….
}
3条答案
按热度按时间7cwmlq891#
如果要保存列表
RaccoltaPunti
必须是Serializable
.9gm1akwq2#
问题似乎已解决(现在文件已成功保存,没有错误,并且通过手动打开,它似乎包含所有信息)。
谢谢大家。
我总结的解决方案,以利于任何其他未来的读者与同一问题。
这个问题通过让学生
RaccoltaPunti
Serializable
,根据以下代码片段:我注意到
RaccoltaPunti
已具有参数的构造函数:作为参考,日志中报告的错误是指代码行:
关于
Globals
同学们,我的实验表明,只要把它注解出来,一切都正常。我没有尝试所有可能的组合(即有或没有参数):我只是删除了它。谢谢所有帮忙的人。
9rygscc13#
尝试创建默认构造函数:
由于该类扩展了应用程序类,因此将通过反射从外部调用它,并且它可能需要一个默认构造函数。默认情况下,如果您没有编写任何构造函数,则默认构造函数已经存在。
使raccoltapunti也可序列化