android中的变量范围问题

时间:2011-04-26 07:11:42

标签: java android

大家好 我在一个活动中有一个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.
 }

}

请帮帮我。

3 个答案:

答案 0 :(得分:3)

问题是onCreate()是在Activity启动时首先调用的方法。此时,您还没有初始化变量数组。这就是你在那里得到NullPointerException的原因。

要解决此问题,您必须确保将其称为:

array=new String[getdatabase.size()];

在尝试访问阵列之前。

正如coder_tim指出的那样,在documentation中你可以清楚地看到onCreate()总是在onStart()之前被调用。

答案 1 :(得分:0)

在onCreate()之后调用

onStart(),因此尚未创建数组。请参阅here

答案 2 :(得分:0)

参考Android活动生命周期,在onStart之前调用onCreate,这就是你得到NullPointerException的原因 此外,只是一个抬头。你应该在你覆盖的方法中的某个地方调用super.onCreate和super.onStart。