2012-05-09 6 views
0

우리는 2 개의 편집 문구를 사용하고 있습니다. 하나는 시간을 입력하고 다른 하나는 분을 입력하는 것입니다.사용자 정의 숫자를 사용하여 카운트 다운 타이머를 만듭니다.

int CountM; 
int CountT; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Mylabel = (EditText)findViewById(R.id.editText1); 
    Hours = (EditText)findViewById(R.id.Timer); 
    Minuttes = (EditText)findViewById(R.id.Minutter); 


void StartTimer() 
{ 
    int TotalT = ((CountT*60*60)+(CountM*60)*1000); 

    mTextField = (TextView) findViewById(R.id.TimerTextView); 
    CountDownTimer aCounter = new CountDownTimer(TotalT, 1000) 
    { 
     public void onTick(long millisUntilFinished) 
     { 
      mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
     } 
     public void onFinish() 
     { 
      mTextField.setText("seconds remaining: " + CountM + CountT); 
     } 
    }; 
    aCounter.start(); 
} 

우리가 Hours into CountTMinutes into CountM에서 우리 Edittext에서 데이터를 수집하고 밖으로 그 결과 침을, 그래서 우리 5 시간 후에 작업을 수행하도록 설정할 수 초에 내려받을 필요가 볼 수 있듯이


. 문자열을 사용하여 Ints로 변환했습니다. 제안 사항이 있으십니까?

+1

무엇이 문제입니까? 작동하지 않는 것은 무엇입니까? –

+0

가 어리 석었지만 StartTimer() 함수를 호출하려고 했습니까? 그리고 네, 한 번 더, 문제는 무엇입니까? 당신은 무엇을 얻고 당신은 무엇을 얻을 것으로 예상합니까? – mihail

답변

0

, 당신은 타이머를 시작해야 클릭에, 당신은 당신의 레이아웃에 Button을 가정하면, 동일한에 대한 코드는 다음과 같습니다

Button startBtn; 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Mylabel = (EditText)findViewById(R.id.editText1); 
    Hours = (EditText)findViewById(R.id.Timer); 
    Minuttes = (EditText)findViewById(R.id.Minutter); 
    startBtn = (Button)findViewById(R.id.startBtn); 
    startBtn.setOnClickListener(new View.OnClickListener() {   
     @Override 
     public void onClick(View v) { 
      try{ 
       String hourStr = Hours.getText().toString(); 
       CountT = Integer.parseInt(hourStr); 
       String minuteStr = Minuttes.getText().toString(); 
       CountM = Integer.parseInt(minuteStr); 
       StartTimer(); 
      }catch(NumberFormatException ex){ 
       ex.printStackTrace(); 
      } 
     } 
    }); 
} 

제안은 : 당신은 아직도 배우고있는 동안, 그것은 것 이해하고 따르는 것이 좋습니다. Java Code Conventions

+0

감사합니다. 문제가 해결되었습니다. –

+0

우리는 8 시간 전 미리 커피 주문을 할 수 있습니다 :) –

0

한가지 :

((CountT * 60 * 60) + (COUNT 분 * 60) * 1000); // 조금 확장하십시오 :

((CountT * 60 * 60) + (CountM * 60) * 1000); // hours/CountT에 1000을 곱하지 않음

연산자 우선 순위에 대한 의문점이 있으면 여분의 대괄호를 사용하십시오.
연산자 우선 순위에 대해 의심의 여지가없는 경우 여분의 대괄호를 사용하십시오.

디버깅 101 팁 # 34 - 정확한 동작 순서가 디버거에서 쉽게 볼 수 있도록 별도의 로컬 변수를로드하는 간단한 식으로 복잡한 식을 나눕니다. 다음과 같이 작성한 경우 :

int minsTicks=CountM*60*1000; 
int hoursTicks=CountT*60*60; 
int totalTicks=hoursTicks+minsTicks; 

이 경우 즉시 문제가 발생한 것입니다.

+0

디버깅을 쉽게하기 위해 다음에 simpel을 유지해야합니다. 문제는 Rajesh가 해결했습니다. 현재 답변 아래에 있습니다. 정보를 int로 올바르게 변환하지 못했습니다. –

관련 문제