2012-01-20 10 views
0

スレッドでパブリック変数を呼び出そうとすると、何らかのエラーが発生します。パブリック変数を呼び出すスレッド

まず私のコード:

public class MyPhoneStateListener extends BroadcastReceiver { 
public String number; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 

     number = "123"; 

     t.start(); 

    } 
    public Thread t = new Thread(new Runnable() { 
     @Override 
     public void run() { 

      handler.sendMessage(handler.obtainMessage(SET_TEXT, number)); 

     } 
    }); 
    public Hander handler = new Handler() { 
     [blabla...] 
    } 
} 

エラーが私が手: /AndroidRuntime(3737):java.lang.StringIndexOutOfBoundsException:長さ= 0; regionStart = 0; regionLength = -1

私はそのnullpointer例外または何かを信じています。

何が間違っていますか?

おかげで、 Prexx

+0

"私はそのnullpointer例外または何かを信じています。" - いいえ、それは 'StringIndexOutOfBoundsException'です - これを記録しました!残念ながら、完全なスタックトレースを与えておらず、コードをハンドラに組み込んでいません。 –

+0

くそー、とにかく、ありがとう、答えを得た:http://stackoverflow.com/questions/6309732/java-multi-threading-passing-a-data-structure-to-the-thread – Prexx

+0

いいえ、私はかなり確信しているStringIndexOutOfBoundsException実際のコードと完全なスタックトレースを表示します。 – kabuko

答えて

1

それはすぐそこjava.lang.StringIndexOutOfBoundsExeption言います。無効なインデックスなどで部分文字列を取りそろうとしている可能性があります。とにかく、スレッディングは責任があるとは思えません。あなたが私たちにもっと多くの情報を与えることができない限り、どこにエラーが起こっているのかについての情報(行番号などを明記してください)は、それ以上に役立つでしょう。

+0

お世話になりました。それは今働く。上記のコメントに私のソリューションを掲載します。私は自分自身のRunnableを作成し、コンストラクタでは私のスレッドが実行されている間に私は文字列を設定しました。おそらくあなたの権利、無効なインデックスなどがあるかもしれません。しかし、これが起こる理由は、スレッドから私のクラスのpublic変数にアクセスすることができないということです。 – Prexx

関連する問題