2012-05-09 15 views
0

2つの編集テキストを使用しています.1つは時間を入力し、もう1つはMinutesに入力します。ユーザー定義番号を使用してカウントダウンタイマーを作成する


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

1点:

((CountT * 60 * 60)+(CountM * 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; 

あなたはstraightaway問題見ているだろうが、実際には、おそらく最初の場所でそれを作っていません:あなたが書かれていた場合は!

+0

デバッグを簡単にするために、次回はそのままにしておいてください。 問題はRajeshによって解決されました。現在、あなたの答えはありません。 これをintに正しく変換するための情報が不足しています。 –

関連する問題