我昨天问了这个问题:
我有问题。我想通过单击按钮或活动“ a”中的其他视图向活动“ b”中的列表视图中添加一些项目。例如:
我的活动“ a”:
b.setOnClickListener(new onClickListener() {
@Override
public void onClick(view v) {
// add item to myarray which there in activity 'b'
myArray.add("");
}
});
我的活动“ b”:
ArrayList<String> myArray;
希望能达到我的目的。谢谢。
然后我得到这个答案:
您可以创建第三个对象(放置ArrayList的公共类),并在每次需要它的值时访问它:从第一个活动更新它并从第二个活动获取值。
活动1:
b.setOnClickListener(new onClickListener() {
@Override
public void onClick(view v) {
Utilities.addValue("String");
}
});
活动2:
ArrayList<String> myArray = Utilities.getArrayList();
实用程序类:
public static class Utilities {
static ArrayList<String> mArrayList;
public static void addValue(String a) {
if (null == mArrayList) {
mArrayList = new ArrayList<>();
}
mArrayList.add(a);
}
public static ArrayList<String> getArrayList() {
return mArrayList;
}
}
但是我有一个新问题。当我单击按钮时,项目将添加到数组字符串并在列表视图中显示。但是,当我退出应用程序并稍后返回该应用程序时,其中包含列表视图的活动“ b”崩溃了。什么问题如何保存添加的项目?谢谢。
答案 0 :(得分:0)
方法getArrayList()
可以返回null,这可能导致崩溃。
像这样更新您的Utilities
类:
public static class Utilities {
private static ArrayList<String> mArrayList;
public static void addValue(String a) {
getArrayList().add(a);
}
public static ArrayList<String> getArrayList() {
if (mArrayList == null) {
mArrayList = new ArrayList<String>();
}
return mArrayList;
}
}