Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 链表不更新值_Java_Android_Object_Linked List - Fatal编程技术网

Java 链表不更新值

Java 链表不更新值,java,android,object,linked-list,Java,Android,Object,Linked List,因此,我调试了我的程序,发现程序的一部分正在更新,而另一部分则没有 我有一个方法: public void storeApplication(String name, String item){ Application app = new Application(name, item); peopleAttending.add(app); } 调试器报告LinkedList(PeopleAttenting)中包含对象 在另一种方法中: public void populat

因此,我调试了我的程序,发现程序的一部分正在更新,而另一部分则没有

我有一个方法:

public void storeApplication(String name, String item){
     Application app = new Application(name, item);
     peopleAttending.add(app);
}
调试器报告LinkedList(PeopleAttenting)中包含对象

在另一种方法中:

public void populateListView() {

    int noOfPeopleAttending = peopleAttending.size();
    String noPeopleAttending = String.valueOf(noOfPeopleAttending);

 Toast.makeText(GuestsAttending.this, noPeopleAttending, Toast.LENGTH_SHORT).show();

}
此方法可以在前一个方法之后调用,并声明LinkedList中没有对象

我检查了对象引用,只是为了确保它们指向同一个引用,并且它们是

任何帮助都将不胜感激

编辑:整个类:

public class GuestsAttending extends Activity {

private LinkedList<Application> peopleAttending = new LinkedList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_guests_attending);

    populateListView();


}

public void storeApplication(String name, String item){
     Application app = new Application(name, item);
     peopleAttending.add(app);
}

public void populateListView() {
   // GuestsAdapter adapter = new GuestsAdapter(this, peopleAttending);
   // ListView listView = (ListView) findViewById(R.id.listView);
   // listView.setAdapter(adapter);

    peopleAttending.size();
    int noOfPeopleAttending = peopleAttending.size();
    String noPeopleAttending = String.valueOf(noOfPeopleAttending);

 Toast.makeText(GuestsAttending.this, noPeopleAttending, Toast.LENGTH_SHORT).show();

}

GuestsAttending Java类:--参见上文。

有用提示:从
Java.util
包将列表类型设置为
列表
接口,而不是
链接列表
本身,这是非常流行的做法


无论如何,我很确定在ActivityFramework运行onCreate方法之前,
storeApplication
方法不会自动触发。也许您的调试器正在以不同的顺序停止它(因为使用了线程或smth),但您应该记录一些调用。试着找出问题所在。

我发现了问题所在:

当我提交预订信息时,它会运行所有必要的方法。但是,当“storeApplication()”方法完成执行后,ArrayList会“清空”所有对象

我只是在使用断点并尝试运行该方法两次时才注意到这一点,第二次输入预订详细信息时,ArrayList声明它为空


我要看看是否可以尝试将ArrayList存储在一个更安全的地方。

既然您有一个调试器,您是否可以在每次访问PeopleAttenting时附加一个断点来停止执行,从而确定是否有其他操作正在清空该列表?你百分之百确定两种情况下参加会议的人都是同一个对象吗?百分之百——我一天的大部分时间都在中断,到目前为止运气都不好/那么在这两段代码之间的某个地方设置一个
peopleatting.clear()
怎么样?@Matthew Levene您需要共享更多的代码。我们不知道程序流程,错误可能存在于您尚未共享的代码中。例如,我们不知道PeopleAttenting变量的作用域是什么。@AbbéRésina在我的程序中没有类似的代码。请参见我的edit.storeApplication()由另一个类触发(该类链接到我从中获取存储数据的XML),您能否以某种方式共享您是如何配置它的?
  public void saveBookingInfo(View view) {

    GuestsAttending sendApplication = new GuestsAttending();

    EditText applicantNameText = (EditText) findViewById(R.id.applicantNameTextField);
    EditText itemToBurnText = (EditText) findViewById(R.id.itemToBurnTextField);

    String appName = applicantNameText.getText().toString();
    String appItemToBurn = itemToBurnText.getText().toString();

    if (appItemToBurn.isEmpty() || appName.isEmpty()) {
        Toast.makeText(BookingScreen.this, "Please fill in all fields.", Toast.LENGTH_SHORT).show();
    }
    else {


       sendApplication.storeApplication(appName, appItemToBurn);
    }
}