2012-04-13 9 views
0

は、私は、このようなコード持っているアンドロイドでTimerTaskをに問題がある:私はTextViewにアクセスしていますので、タイマータスクが取得startet私のアプリがクラッシュしたアンドロイドの新しいTimerTaskアクションで何かを変更するには?

timer = new Timer(); 
timer.schedule(new TimerTask() { 
     public void run() { 
      countInt = countInt + 1; 
      textview1.setText(countInt); 
     } 
    }, 1000); 

たびに、私の事を、それがです他のスレッドの権利ですか?

これを解決するにはどうすればよいですか?

答えて

3

これを試してみてください。..

timer = new Timer(); 
    timer.schedule(new TimerTask() { 
      public void run() { 
       countInt = countInt + 1; 
       yourActivity.this.runOnUiThread(new Runnable() 
       public void run(){ 
        {textview1.setText(String.valueOf(countInt))}); 
       } 
      } 
     }, 1000); 

あなたが許可されていないUIスレッドに属し何か(textview1.setText(countInt);)をいじっているので、それがクラッシュした...

4

はい、あなたは正しいです、それが原因のクラッシュしますUIスレッドではなく、ビューにアクセスしています。これを解決するには、アクティビティを使用してRunnable to UIスレッドを投稿できます。

timer = new Timer(); 
timer.schedule(new TimerTask() { 
    public void run() { 
     countInt = countInt + 1; 
     YourActivity.this.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       textview1.setText(countInt); 
      } 
     }); 
    } 
}, 1000); 
関連する問題