2010-12-06 11 views
2

私は2つのクラス間で文字列配列を渡す必要のあるAndroidアプリケーションを作成しています。文字列は正常に初期化され、文字列の内容を1つのクラスに出力できますが、別のクラスに渡そうとするとNull Pointer Exceptionエラーが発生します。私は、私は非常にシンプルでありながら任意の何かが欠けている感じを持っているJavaクラス間の文字列配列の受け渡しAndroid App

public class wakeupalarm extends Activity { 

private TextView herestext_; 

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

    herestext_ = (TextView) findViewById(R.id.TextView01); 

    accelerometer accelerometercall = new accelerometer(); 

    String movearray[] = accelerometercall.getmovement(); 

    herestext_.setText(movearray[2]); 
    } 

    } 

accelerometer.java:

public class accelerometer extends Service { 

public String movement[]; 

public void onCreate() { 

    movement = new String[1000000]; 

} 

public void updatearray() { 
    movement[arraypos]=getCurrentTimeString(); 
    //Toast.makeText(this, movement[arraypos] , Toast.LENGTH_SHORT).show(); //this correctly displays each position in the array every time it updates so I know the array is working correctly in this file 
    arraypos+=1; 
} 

public String[] getmovement(){ 
    return movement; 
} 
    } 

wakeupalarm.java次は私のコードのストリップダウンバージョンです。助けが大いに評価されるだろう!

おかげで、

スコット

答えて

1

あなたはコンストラクタがないので、完全に初期化されていない新しい加速度計クラスを作成しているが、あなたはそのメンバーにアクセスします。もちろん、それはnullになります。

あなたの2つのクラスがどのように関係しているのかわかりませんが、サービスがアクティビティを呼び出す場合は、インテントを通して文字列を渡す必要があります。

サイドノート:クラス名は常に大文字で始める必要があります。メソッド/変数名には、ラクダの場合、つまり「updateArray」が必要です。また、ここでコードを選択するには、Ctrl + Kキーを押してください。

+0

私はばかです。助けてくれてありがとう。 – Scott

0

最初の問題は、100万個のスロットがあるアレイを作成していることです。それは本当にやっているのですか?それは多くのメモリを必要とするでしょう---かなり可能かもしれません。代わりに、必要に応じて拡張する文字列のベクトルを持つ必要があります。

+0

百万のスロット配列が 'NullPointerException'をスローさせているのではないかと疑います。 OPがメモリ不足の場合は、OutOfMemoryExceptionなどが表示されます。しかし、おそらく不必要に大きな配列であることに私は同意します。 – Asaph

+0

ええ、私は質問に答えていませんでした。プログラミングスタイルについて不平を言うほどです。 – vy32

関連する問題