2012-05-09 34 views
0

我們使用2個edittext,一個輸入小時,一個輸入分鐘。使用用戶定義號碼創建倒數計時器


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)+(CountM * 60)* 1000); //(擴展一下):

((CountT * 60 * 60)+(CountM * 60)* 1000); //小時/ CountT不乘以1000

如果對運營商優先級有任何疑問,請使用額外的括號。
如果毫無疑問關於運營商優先級,請使用額外的括號。

調試101提示#34 - 將複雜表達式分解爲更簡單的表達式,加載單獨的本地變量,以便在調試器中輕鬆看到確切的操作順序。如果你曾經寫過:

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

你會看到這個問題,事實上,你可能沒有把它放在第一位!

+0

下次會記住保存它,以便於調試。 該問題已由Rajesh解決,目前位於您的答案下方。 我們剛剛錯過了將它正確轉換爲int的信息。 –