Java 在添加ArrayList中替换的上一个元素时

Java 在添加ArrayList中替换的上一个元素时,java,android,arraylist,Java,Android,Arraylist,进行了调试。我可以清楚地看到entryLogs.add(dl);在entryLogs的值中。第一个数据被替换,第二个数据已插入ArrayList 每次我输入新值时,它都会将其添加到ArrayList中,但会将第一个条目替换为第二个条目。 例如: 我加了一个,再点击它就加了一个。 同样,添加B并再次单击它添加B。 但在Arraylist中,该值为[17/4/2014:20:29 B,17/4/2014:20:29 B] 请建议需要做什么。 整个代码可在此处找到: entryLogs=newarra

进行了调试。我可以清楚地看到entryLogs.add(dl);在entryLogs的值中。第一个数据被替换,第二个数据已插入ArrayList

每次我输入新值时,它都会将其添加到ArrayList中,但会将第一个条目替换为第二个条目。 例如: 我加了一个,再点击它就加了一个。 同样,添加B并再次单击它添加B。 但在Arraylist中,该值为[17/4/2014:20:29 B,17/4/2014:20:29 B]

请建议需要做什么。 整个代码可在此处找到:

entryLogs=newarraylist();
timeText=(EditText)getView().findViewById(R.id.DateTimeText);
entryText=(EditText)getView().findViewById(R.id.DiaryEntryText);
按钮saveBtn=(按钮)getView()
.findviewbyd(R.id.saveDiaryEntryBtn);
saveBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
timeEntry=timeText.getText().toString();
entryEntered=entryText.getText().toString();
dl=新日志(1,时间输入,输入);
entryLogs.add(dl);

也许您应该删除第64行

entryLogs = new ArrayList<DiaryLogs>();
entryLogs=newarraylist();
并初始化第22行上的ArrayList

ArrayList<DiaryLogs> entryLogs;
arraylistentrylogs;
也许有帮助:)

把这两行

timeText=(EditText)getView().findViewById(R.id.DateTimeText)

在@Override中 公共void onClick(视图v){ }


这可能会有所帮助。

在类
DiaryLogs.java
中,您将字符串timeEntry和entryEntered声明为
static

static String timeEntry;
static String entryEntered;

移除static修饰符就可以了。静态对象对于该类的任何实例都具有相同的值(即使没有实例也可以访问),因此,如果您在另一个对象中设置值,每个实例都将使用该值。

按照您的建议执行,但结果相同您是legend,我的朋友:)修复了该部分。但在第一个onClick in Monday\u fragment中出现了一个新问题,它将数据添加到ArrayList中。第二个OnClik in Monday\u fragment需要到Monday\u list\u fragment,其中列表如图所示。有一个按钮将其返回到星期一的片段。我调试了一个seen,当我返回时,ArrayList中的所有数据都消失了。如何保持ArrayList数据在返回时不被清除。这里的代码:如果要使用t,在更改方向或活动时,必须显式存储ArrayList的状态hat数据。您可以签出以实现此功能。我知道链接是关于旋转屏幕的,但当您离开活动或片段时,也会发生同样的事情。另一个选项是创建一个扩展应用程序的类,并在那里声明arraylist。问题是所有类都可以访问它。
        entryText = (EditText) getView().findViewById(R.id.diaryEntryEText);
static String timeEntry;
static String entryEntered;