我有一个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?
非常感谢
答案 0 :(得分:1)
在代码顶部使用1个列表对象,不要在函数中创建新的列表对象。它看起来应该是这样的。
public static ArrayList<String> list = new ArrayList<String>();
// onCreate....
public void addElement() {
for(int x=0; x<=5;x++){
list.add(Integer.toString(x));
}
}
public void showElements() {
Log.d("Log",list.toString());
}