2016-03-26 21 views
0

コードを実行しようとするとこのエラーが発生します。あなたはエラーが私は私をインスタンス化しようとしているのonCreate機能のライン71を発生見ることができるようにAndroid Studioでクラスの配列をインスタンス化する必要はありますか?

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) 

を(あなたは私が私のコード行を言及していなかった他の株のほとんどをスキップ参照することを容易にします)このサイトの他の質問で言われているように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. 私はAndroid Studioをこれまでの4日間、Youtubeのビデオから学んでいたので、私はJavaとAndroidにはまだ自信がありません。なぜなら私が知るオブジェクト指向言語はC++だからです。あなたが気にしないなら、私に体系的な知識を与えることができるAndroidアプリケーションの開発についての本をお勧めしますか?私の混乱にあなたの時間を費やしてくれてありがとう。

答えて

1

ここで明らかな問題が1つあります。配列はサイズ14の配列のインデックス14を持つ要素にアクセスしています。配列は0から始まり、インデックス14の要素はありません.14個の要素は0から13のインデックスが付けられています。配列が常に範囲内にあることを確認してください:

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

あなたは私の一日を作った、あなたと同じ希望 –