2011-04-26 95 views
2

嗨全部 我有一個arraylist和一個活動中的數組,並有兩個函數。我將arraylist和array聲明爲activity,並在函數中使用。但我不能在第二個函數中訪問這些變量。兩個功能都在同一個活動中。在第二個函數中給出了Logcat中的NullPointerException。 代碼:android中的變量範圍問題

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

您確定onStart在onCreate之前運行嗎? – npinti 2011-04-26 07:15:47

+0

根據Activity的生命週期,在onStart之前調用onCreate,所以你在onCreate而不是onStart()中執行代碼,我想知道在onStart() – 2011-04-26 08:34:19

回答

0

onStart()在onCreate()之後被調用,所以數組還沒有被創建。見here

3

問題是,onCreate()是在Activity開始時首先調用的方法。在這一點上,你還沒有初始化你的變量數組。這就是爲什麼你會得到一個NullPointerException。您嘗試訪問該陣列之前

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

爲了解決你必須確保你把這個問題。

由於coder_tim指出,在documentation你可以清楚地看到onCreate()總是在onStart()之前調用。

+1

中執行它的任何特定原因同意,檢查了這一點:http:/ /developer.android.com/reference/android/app/Activity.html – 2011-04-26 07:16:06

+0

好的鏈接,你可以看到onStart總是在onCreate之後被調用。 – RoflcoptrException 2011-04-26 07:17:29

0

引用到Android活動生命週期,onCreate在onStart之前被調用,這就是爲什麼你得到空指針異常 此外,只是一個頭。你應該調用super.onCreate和super.onStart在你被覆蓋的方法的某個地方。