如何通过单击活动“ b”中的按钮将项目添加到活动“ a”中的字符串数组,并在退出应用后保存项目?

时间:2019-03-16 17:04:17

标签: android arrays listview

我昨天问了这个问题:

我有问题。我想通过单击按钮或活动“ 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”崩溃了。什么问题如何保存添加的项目?谢谢。

1 个答案:

答案 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;
    }
}