2016-12-22 3 views
0

5 초마다 정수 레이블을 증가시키는 레이블을 어떻게 얻습니까? 타이머 기능으로 해보려고했습니다. 내가 여기 가까이있는 것처럼 느껴진다. 현재이 기능은 매번 누를 때마다 증가시킵니다. 타이머 대괄호에 증가 카운터 부분을 넣으면 앱이 충돌합니다.버튼을 누르고 있으면 매초마다 레이블 정수가 증가합니다. 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); 
    } 
}; 
관련 문제