2011-03-01 10 views
0

안드로이드에 카운터 시계 종류를 만들고 싶습니다. 내가 카운터를 누르는 버튼을 가지고 있고 멈춤 버튼을 누르면 멈 춥니 다.안드로이드의 카운터

이 나는이 코드를 작성한하지만 루프가 계산을 표시되지, 499을 보여줍니다 시작 어느 때

public class counter extends Activity { 
/** Called when the activity is first created. */ 
Button btnStart; 
TextView txtCounter; 
boolean status = false; 
int counter = 0; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    btnStart = (Button) findViewById(R.id.btnStart); 
    txtCounter = (TextView) findViewById(R.id.txtCounter); 
    initCouner(); 
    btnStart.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if(status == false) 
     {    
      for(int i=0; i < 500; i++) 
      { 
      txtCounter.setText(String.valueOf(i)); 
      } 
      btnStart.setText("Stop"); 
      status = true; 
     } 
     else if (status == true) 
     { 

      btnStart.setText("Start"); 
      status = false; 
      initCouner(); 
     } 
    } 
}); 

} 
public void initCouner() 
{ 
    btnStart.setText("Start"); 
    txtCounter.setText("0"); 
}} 

을 작동하지 않습니다. 그리고 중지 버튼이 작동하지 않습니다.

감사합니다.

답변

2

에 코드, I

public void onClick(View v) { 
      if(status == false) 
      {  
       btnStart.setText("Stop"); 
       status = true; 


       new Thread(new Runnable() { 


        @Override 
        public void run() { 
         // TODO Auto-generated method stub 


         while(status!=false) 
         { 
          runOnUiThread(new Runnable() { 

           @Override 
           public void run() { 
            // TODO Auto-generated method stub 

            txtCounter.setText(String.valueOf(counter)); 
            counter++; 
           } 
          }); 
          try { 
           Thread.sleep(100); 
          } catch (InterruptedException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } 
         } 

        } 



       }).start(); 

      } 

    else if (status == true) 
      { 

       btnStart.setText("Start"); 
       status = false; 
       initCouner(); 
      } 
     } 
    }); 
1

변경 T0X1C의 ANS의 도움이

public void onClick(View v) { 
    if(status == false) 
    {  
     btnStart.setText("Stop"); 
     status = true;   
     new Thread(new Runnable() 
     { run(){ 
       for(int i=0; i < 500; i++) 
       { 
        runOnUiThread(new Runnable() 
         { 
          @Override 
          public void run() 
          { 
           txtCounter.setText(String.valueOf(i)); 
          } 
         }); 
        Thread.sleep(1000); 
       }} 
     }).start(); 

    } 
    else if (status == true) 
    { 

     btnStart.setText("Start"); 
     status = false; 
     initCouner(); 
    } 
} 
}); 
+0

'status' 변수가 루프에서 작동하는지 확인해야합니다. 이 경우에는 '휘발성'으로 만드는 것을 잊지 마십시오. –

+0

사실 고마워요. 사실 저는 그/그녀가 원하는 것을 달성하기위한 절차를 내 렸습니다. 그래서 나 자신과 테스트를하지 않았습니다. 프로 시저가 올바르지 만 프로덕션을위한 지침 목적을위한 버그는 없습니다. P – ingsaurabh

+0

위에서 언급 한 코드가 컴파일되지 않고 스레드에 대한 실행 방법도 없습니다. – kaibuki