2016-12-22 13 views
0

ボタンを押したまま5秒ごとに整数ラベルを増加させるラベルを取得する方法を教えてください。私はタイマー機能でそれをやろうとしました。私はここの近くにいるように感じる。現在のところ、これはプレスごとにそれを増やします。増分カウンターパートをタイマーブラケットに入れると、アプリがクラッシュします。次のことをチェックしてください:ボタンを押し続けると、1秒ごとにラベルの整数が増えます。Androidではどうですか?

button.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch(event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 


        Timer t = new Timer(); 
        t.schedule(new TimerTask() { 
         @Override 
         public void run() { 
          count=count+1; 
          //app crashes if i insert the code here 
         } 
        }, 5000); 

        level= (TextView) findViewById(R.id.level); 
        level.setText(Integer.toString(count)); 

       case MotionEvent.ACTION_UP: 

        break; 
      } 
      return false; 
     } 
    }); 

このthreadは、この点に私を助けたが、それはアプリをこのようにクラッシュ!

答えて

0

UIの要素はUiThreadからのみ変更できます。YOURCLASSNAMEの代わりにクラス名を使用してください。

Timer t = new Timer(); 
    t.schedule(new TimerTask() { 
     @Override 
     public void run() { 
      count=count+1; 

      YOURCLASSNAME.this.runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        level= (TextView) findViewById(R.id.level); 
        level.setText(Integer.toString(count)); 
       } 
      }); 
     } 
    }, 5000); 
0

を使用できハンドラまたは(runOnUiThreadと())TimerTaskを:

Handler handler=new Handler(); 

handler.post(runnable); 
Runnable runnable=new Runnable(){ 
    @Override 
    public void run() { 
     //increment variable here. 
     handler.postDelayed(runnable, 5000); 
    } 
}; 
関連する問題