[英]Why does an ArrayList<MyClass> suddenly change its values
我有一個ArrayList<MyClass>
,其中充滿了Measure
對象,是從手機的加速度傳感器獲取的。 這些對象還有另一個帶有150個度量值的ArrayList。 當我在調試時調查此Arraylist時,它已正確填充。 但是在我想使用按鈕事件獲取ArrayList之后,值已更改。 內部對象的數量保持不變,但始終是一個相同的對象,該對象以前不在ArrayList中。 希望您能給我一點提示,在這里做什么。 太令人困惑了...
public class StartDesk extends AppCompatActivity implements SensorEventListener{
private ArrayList<SingleSwing> alSwingsCurSession;
private ArrayList<SingleAccValue> alSavedAccValues;
private AudioSensorClass asc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_desk);
...
alSavedAccValues = new ArrayList<>();
bRecording = false;
btnStart = (Button) findViewById(R.id.btnStart);
btnStart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
RecordButtonHandler();
}
});
}
private void RecordButtonHandler() {
if(!bRecording) {
alSwingsCurSession = new ArrayList<>();
...
}
else {
btnStart.setText("Start Recording");
if (alSwingsCurSession.size() > 0) {
...
}
bRecording = false;
}
}
...
private void SaveSwingINI(ArrayList<SingleAccValue> al_SavedAccValues) {
if(al_SavedAccValues.size()>=150) {
SingleSwing swing = new SingleSwing();
swing.setAl_MeasureData(al_SavedAccValues);
alSwingsCurSession.add(swing);
}
}
...
}
alSwingsCurSession
具有其他值,當在按鈕事件中調用它時,它將進入SaveSwingINI
方法。 我的班級沒有靜態字段。
從內存的一點開始,“ al_SavedAccValues”始終是相同的ArrayList <>。 在“ SaveSwingINI”方法中創建新的“ al_SavedAccValues”數組列表很有幫助。
private void SaveSwingINI(ArrayList<SingleAccValue> al_SavedAccValues) {
if(al_SavedAccValues.size()>=150) {
SingleSwing swing = new SingleSwing();
ArrayList<SingleAccValue> al_SwingValues = new ArrayList<>(al_SavedAccValues);
swing.setAl_MeasureData(al_SwingValues);
alSwingsCurSession.add(swing);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.