2016-03-26 17 views
0

我在嘗試運行我的代碼時遇到此錯誤。 (爲了方便給你看我跳過其中大部分並沒有提到我的代碼行其他行)我應該在Android Studio中實例化Class的數組?

03-26 22:23:51.800 2425-2425/? E/RCPManagerService: PackageReceiver onReceive() Failed to load meta-data, NullPointer: null 
03-26 22:23:53.950 15700-15700/? E/AndroidRuntime: FATAL EXCEPTION: main 
               Process: com.example.bilguun.pengling2, PID: 15700 
               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bilguun.pengling2/com.example.bilguun.pengling2.MainActivity}: java.lang.NullPointerException 
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2436) 
                at at com.example.bilguun.pengling2.MainActivity.onCreate(MainActivity.java:71) 

正如你可以看到發生的onCreate函數在那裏我試圖實例的71行錯誤我在本網站的其他問題中提到的稱爲Fault的類。這裏是代碼(我爲什麼對外宣稱是我需要在許多其他功能和活動,這些類的原因)

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Faults=new Fault[14]; 
    for(int i=0;i<15;i++){ 
     Faults[i]=new Fault("Unknown"); 
    } 
} 
Fault[] Faults; 

這裏是類的故障代碼。 Serializable的原因是,我需要將它傳遞給其他活動。

class Fault implements Serializable{ 
    public String fault_name="Not known"; 
    public int L_number=0,T_number=0; 
    public String path="b"; 
    public Fault(String name){ 
     this.fault_name=name; 
    } 
} 

我已經想盡一切可能的方式包括以下環節和多個其他人,但沒有找到解決辦法

NullPointerException when Creating an Array of objects

所以我的問題是

  1. 我可以聲明之外的數組的類,而在OnCreate函數中實例化它?
  2. 除數組聲明之外是否還有其他錯誤可能會導致此類錯誤。換句話說,其他部分的代碼可能會導致此錯誤?
  3. 由於沒有主函數應該在哪裏聲明和實例化這些變量?
  4. 由於我從Youtube視頻到目前爲止已經學習了4天的Android Studio,對Java和Android仍然沒有信心(因爲我只知道面向對象的語言是C++)。如果你不介意,你可以請建議一本關於Android應用程序開發的書籍,它能給我係統的知識嗎?並感謝您花時間在我的混亂。

回答

1

這裏有一個明顯的問題。您正在訪問索引爲14的元素,其大小爲14的數組。數組是從零開始的,因此沒有索引爲14的元素。這14個元素的索引從0到13.使用該元素的length屬性更容易數組以確保循環總是在範圍內:

Faults=new Fault[14]; 
for(int i=0; i < Faults.length; i++){ 
    Faults[i]=new Fault("Unknown"); 
} 
+0

你做了我的一天,希望你一樣 –

相關問題