稍后定义变量(否则:NullPointerException)
Later Defining variable (else: NullPointerException)
我有一个 ArrayList,它在一个函数中定义,并在另一个函数中被调用。但是当我在开头添加 public ArrayList<String> list = new ArrayList<String>();
,然后 运行 一个将项目添加到该列表的函数,然后尝试在另一个函数中调用 list
时,它会覆盖之前的集合,只是 returns 一个空列表。
但是当我一开始只有 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 个列表对象,不要在函数中创建新列表对象。它应该是这样的。
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());
}
我有一个 ArrayList,它在一个函数中定义,并在另一个函数中被调用。但是当我在开头添加 public ArrayList<String> list = new ArrayList<String>();
,然后 运行 一个将项目添加到该列表的函数,然后尝试在另一个函数中调用 list
时,它会覆盖之前的集合,只是 returns 一个空列表。
但是当我一开始只有 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 个列表对象,不要在函数中创建新列表对象。它应该是这样的。
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());
}