大家好 我在一个活动中有一个arraylist和数组,并有两个功能。我在活动中声明了arraylist和array,并在函数中使用。但我无法访问第二个函数中的那些变量。两个功能都在同一个活动中。在第二个函数中,在Logcat中给出了NullPointerException。 代码:
public class testapplication extends Activity {
ArrayList<String> getdatabase = new ArrayList<String>();
public String[] array;
protected void onStart() {
getdatabase.add("1");
getdatabase.add("2");
array=new String[getdatabase.size()];
getdatabase.toArray(array);
Log.e("app",""+array.length()); // print as app 2
}
public void onCreate(Bundle savedInstanceState) {
Log.e("app",""+array.length()); // NullPointerException.
}
}
请帮帮我。
答案 0 :(得分:3)
问题是onCreate()是在Activity启动时首先调用的方法。此时,您还没有初始化变量数组。这就是你在那里得到NullPointerException的原因。
要解决此问题,您必须确保将其称为:
array=new String[getdatabase.size()];
在尝试访问阵列之前。
正如coder_tim指出的那样,在documentation中你可以清楚地看到onCreate()总是在onStart()之前被调用。
答案 1 :(得分:0)
onStart(),因此尚未创建数组。请参阅here。
答案 2 :(得分:0)
参考Android活动生命周期,在onStart之前调用onCreate,这就是你得到NullPointerException的原因 此外,只是一个抬头。你应该在你覆盖的方法中的某个地方调用super.onCreate和super.onStart。