稍后定义变量(否则:NullPointerException)

时间:2015-03-23 18:25:53

标签: android variables arraylist overwrite

我有一个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?

非常感谢

1 个答案:

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