【发布时间】:2015-05-26 21:07:18
【问题描述】:
我有一个 ArrayList,它在一个函数中定义,并在另一个函数中调用。但是当我在开头添加public ArrayList<String> list = new ArrayList<String>();,然后运行一个将项目添加到该列表的函数,然后尝试在另一个函数中调用list,它会覆盖前一个集合并返回一个空列表。
但是当我一开始只有public ArrayList<String> list;时,再次在一个函数中添加项目,然后尝试使用list,它会抛出一个NullPointerException。
我还尝试在 onCreate 方法中使用 ArrayList<String> list = new ArrayList<String>();,但这也是 NPE。
所以只有一个功能
public void setList() {
for(int x=0; x<=5;x++){
list.add(Integer.toString(x));
}
}
(Integer.toString(x) 目前仅用于测试)
另一个是
public void setList() {
Log.d("Log",list.toString());
}
在public class MainActivity extends FragmentActivity {之后的最开始
我试过了
public ArrayList<String> list; //this throws a NPE
和
public ArrayList<String> list = new ArrayList<String>(); //this overwrites the variable each time it's called
我该如何解决这个问题?
问题可能是我在 set 方法之后和调用 get 方法之前更改了显示的 Fragment 吗?
非常感谢
【问题讨论】:
-
你能告诉我们你的代码吗?描述有点混乱。
-
听起来您只需要另一个列表? - 是的,实际上代码会有所帮助。
-
你能包含更多代码吗?我们需要查看列表的声明位置。
-
如果同时修改同一个列表,可以使用
ConcurrentLinkedQueue或者syncronized(list)就可以了。
标签: android variables arraylist overwrite