2017-03-12 2 views
-1

私はビュークラスIntroScreenを持っています。これは私のxmlレイアウトで膨らんでいます。 私がonCreateメソッド内で定義したString[]要素 にアクセスしようとするまで、インフレは素晴らしいです。なんとなく、私はオブジェクトを初期化した後に私のIntroScreenビューを呼び出す呼び出しが発生しても、私にはNullPointerExceptionが与えられます。ここにいくつかのコードがあります:AndroidのカスタムViewクラスから静的オブジェクトにアクセスする

//class MainActivity which holds onCreate() 
static String[] stringArray; 

//inside onCreate 

stringArray = new String[20]; 
stringArray[0] = "the world"; 
stringArray[1] = "is round"; 

//a few lines down the code... still inside onCreate() 
intro = (IntroScreen)this.findViewById(R.id.hereintro); 

//inside my IntroScreen which extends view 
//constructors are as follows: 
public IntroScreen(Context c){ 
    super(c); 
} 

public IntroScreen(Context c, AttributeSet a){ 
super(c, a); 
boolean b = false; 

if(MainActivity.stringArray[0].equals("the world"))b = true; //problem here 
//above line of code gives null pointer exception 
} 

//inside onDraw() 
//need more calls to MainActivity.stringArray in order to create custom view 
//but calls won't work at all 

私はこのstatic String []配列にどうやってアクセスできますか?それは、コードの提案の

intro = (IntroScreen)this.findViewById(R.id.hereintro); 

任意のアイデアの行でXMLを介して膨張いますので、私は、私のIntroScreenビューに に

多くのおかげ

+0

静的String配列の目的は何ですか?それはあなたの活動のすべてのインスタンスで本当に同じですか? –

+0

'// inside onCreate()'のようなコメントを書くのではなく、実際のonCreate()の宣言を書くだけです。同じことがクラスにも当てはまります。 –

+0

MainActivityクラス内で定義された静的String []配列にアクセスする必要があるクラス(内部クラスではありません)を作成しました。このようにすべての変数が作成されるわけではありません。 @ Code-Apprentice –

答えて

1

IntroScreenのコンストラクタが前に呼び出されると、それを渡すことはできませんonCreate()が呼び出されるため、配列はまだ初期化されていません。あなたの活動を膨張させる前に、単にそれを初期化することを確認してください。

+0

setContentViewコールの前に配列を初期化しましたが、それでもまだNulPointerException @DimitryBrantを返します –

+0

固定しました...私の愚かな間違いです。私はsetcontentviewの後に初期化された私のコードで別のString []配列を呼び出していた..ヘルプありがとう –

0

その文字列配列パラメータをpublic IntroScreen(Context c, AttributeSet a)に渡す

関連する問題