当这个方法结束时,ArrayList 被清空
When this method ends, the ArrayList is emptied
我有这个方法用于存储应用程序列表。
public void storeApplication(String name, String item){
peopleAttending.add(new Application(name, item));
}
它做了它应该做的事情,但是当方法完成时,ArrayList 中包含的数据也会被销毁。
我已经全局声明并实例化了 ArrayList:
private ArrayList<Application> peopleAttending = new ArrayList<>();
所以我会想到一旦对象被添加到ArrayList,它就会被安全地存储直到程序终止。
如有任何帮助,我们将不胜感激。
Class 调用 storeApplication:
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);
}
}
编辑 - 整个 class:
public class GuestsAttending extends Activity {
private ArrayList<Application> peopleAttending = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guests_attending);
}
public void storeApplication(String name, String item){
peopleAttending.add(new Application(name, item));
}
}
试着修改一下你的代码。
- 私有 ArrayList 人员参加;
- 有 getter 和二传手
- 在添加到列表之前检查 if(peopleAttending==null) peopleAttending = new ArrayList<>();
- 在调用方法中,创建 GuestsAttending 的对象,然后尝试使用 getter.
获取列表
根据您的要求,将详细说明我的观点:
在 GuestsAttending 中您正在使用
private ArrayList<Application> peopleAttending = new ArrayList<>();
我要你打破这条线,
private ArrayList<Application> peopleAttending;
public ArrayList getPeopleAttending(){
return peopleAttending;
}
public void setPeopleAttending(ArrayList<Application> peopleAttending){
this.peopleAttending=peopleAttending;
}
public void storeApplication(String name, String item){
if(peopleAttending==null)
peopleAttending = new ArrayList<>();
peopleAttending.add(new Application(name, item));
}
假设您要在 saveBookingInfo class 中使用 peopleAttending 列表,您应该使用
ArrayList<Application> peopleAttendingLst = sendApplication.getPeopleAttending();
您应该可以获取列表中的对象。
您的 GuestsAttending 扩展 Activity class,因此请勿这样做:
GuestsAttending sendApplication = new GuestsAttending(); //remove this line
让系统处理创建 activity。
我猜 saveBookingInfo() 也可能是 GuestsAttending activity 的成员,例如有线连接。到一个按钮。
I would have thought that once the object is added to the ArrayList,
it would be safely stored until the program terminates
没有。查看发布的代码 saveBookingInfo 实例化 GuestsAttending,它声明 peopleAttending。当 saveBookingInfo 完成时 GuestsAttending 被销毁因此 peopleAttending 被销毁。
在您的第一个 activity 中声明 peopleAttending 并使用意图传递其他屏幕。不要忘记使用 onSaveInstanceState 来处理由 OS.
关闭的应用程序
我有这个方法用于存储应用程序列表。
public void storeApplication(String name, String item){
peopleAttending.add(new Application(name, item));
}
它做了它应该做的事情,但是当方法完成时,ArrayList 中包含的数据也会被销毁。
我已经全局声明并实例化了 ArrayList:
private ArrayList<Application> peopleAttending = new ArrayList<>();
所以我会想到一旦对象被添加到ArrayList,它就会被安全地存储直到程序终止。
如有任何帮助,我们将不胜感激。
Class 调用 storeApplication:
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);
}
}
编辑 - 整个 class:
public class GuestsAttending extends Activity {
private ArrayList<Application> peopleAttending = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guests_attending);
}
public void storeApplication(String name, String item){
peopleAttending.add(new Application(name, item));
}
}
试着修改一下你的代码。
- 私有 ArrayList 人员参加;
- 有 getter 和二传手
- 在添加到列表之前检查 if(peopleAttending==null) peopleAttending = new ArrayList<>();
- 在调用方法中,创建 GuestsAttending 的对象,然后尝试使用 getter. 获取列表
根据您的要求,将详细说明我的观点:
在 GuestsAttending 中您正在使用
private ArrayList<Application> peopleAttending = new ArrayList<>();
我要你打破这条线,
private ArrayList<Application> peopleAttending;
public ArrayList getPeopleAttending(){
return peopleAttending;
}
public void setPeopleAttending(ArrayList<Application> peopleAttending){
this.peopleAttending=peopleAttending;
}
public void storeApplication(String name, String item){
if(peopleAttending==null)
peopleAttending = new ArrayList<>();
peopleAttending.add(new Application(name, item));
}
假设您要在 saveBookingInfo class 中使用 peopleAttending 列表,您应该使用
ArrayList<Application> peopleAttendingLst = sendApplication.getPeopleAttending();
您应该可以获取列表中的对象。
您的 GuestsAttending 扩展 Activity class,因此请勿这样做:
GuestsAttending sendApplication = new GuestsAttending(); //remove this line
让系统处理创建 activity。
我猜 saveBookingInfo() 也可能是 GuestsAttending activity 的成员,例如有线连接。到一个按钮。
I would have thought that once the object is added to the ArrayList, it would be safely stored until the program terminates
没有。查看发布的代码 saveBookingInfo 实例化 GuestsAttending,它声明 peopleAttending。当 saveBookingInfo 完成时 GuestsAttending 被销毁因此 peopleAttending 被销毁。
在您的第一个 activity 中声明 peopleAttending 并使用意图传递其他屏幕。不要忘记使用 onSaveInstanceState 来处理由 OS.
关闭的应用程序