2012-03-15 3 views
0

オブジェクトの配列を使用しようとしていますが、同じクラス内の他のメソッドで配列を使用すると配列がnullになります。アンドロイド配列は他のメソッドで使用されていますがnullです

Summon[] summonArray; 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.summonsmenu); 

     Summon[] summonArray = new Summon[3]; // initialize array 
     for (int i = 0; i < summonArray.length; i++) 
      summonArray[i] = new Summon(); // initialize each object in the array 
} 

public void onClick(View view) { 
     //@SuppressWarnings("unchecked") 
     switch (view.getId()) { 
     case R.id.summonButton1: 
       name.setText(summonArray[1].getName()); 
//* this is where I get the null pointer and see that the summonArray[1] is null.* 
       refresh(summonArray); 
} 

私は私のonCreateメソッドでは、[1] summonArrayをチェックすると、それは私が望むすべての値を持っていますが、私はonClickのか、他の方法でそれを見たとき、デバッガがnullとして値を示しています。 休憩。

答えて

1

あなたの配列を再宣言してください。

世界1

これを行うためにあなたのonCreateを変更、使用されていない:あなたはのonCreateでsummonArrayを再宣言しました

this.summonArray = new Summon[3]; // initialize array 
0

を()。

変更次

召喚[] summonArray =新しい召喚[3]。 //アレイ初期化

に:

summonArray =新しい召喚[3]。 //配列を初期化します

0

onCreate()であなたのsummonArrayを宣言しました。 []、あなたはインスタンスフィールドを隠しローカル変数summonArrayを、作成している召喚の種類を指定することで

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.summonsmenu); 

     summonArray = new Summon[3]; // initialize array 
     for (int i = 0; i < summonArray.length; i++) 
      summonArray[i] = new Summon(); // initialize each object in the array 
} 
1

like-見て、それを削除します。 を使用してください。summonArray = new Summon [3]; の代わりに を呼び出すSummon [] summonArray =新しいSummon [3];

関連する問題