2011-11-23 4 views
1

ゲームを作成しようとしている私の友人と私は、プレーヤーを得点する方法としてタイマーを使用したいので、ゲームの開始時に0から開始し、終了すると停止する画面上のタイマーを表示したいゲーム。Androidアプリケーションのスクリーンタイマーで?

私は、HandroidとRunnableオブジェクトを使用して、私が望むように動作させるために、他の記事とandroid devウェブサイトを見てきましたが、今のところrun()メソッドがRunnableオブジェクトの内部にあります完全にスキップされているので、何も行われていません。今、私は私たちの活動ののonCreateメソッドの内部で、次のいる:run()方法は完全にスキップされている理由今、最初のオフ

mHandler = new Handler(); 
    mStartTime = System.currentTimeMillis(); 
    mHandler.removeCallbacks(mUpdateTimeTask); 
    mHandler.postDelayed(mUpdateTimeTask, 100); 

    mUpdateTimeTask = new Runnable() 
    { 
     public void run() 
     { 
      final long start = mStartTime; 
      long millis = SystemClock.uptimeMillis() - start; 
      int seconds = (int) (millis/1000); 
      seconds = seconds % 60; 

      mHandler.postAtTime(this, 
        (start + seconds + 1) * 1000); 

      elapsed.setText(seconds); 
     } 
    }; 

、誰も私を伝えることができますか?また、これは私たちがやろうとしていることのために働くでしょうか?あるいはRunnableオブジェクトを別の場所に置くべきですか?別のアプローチを使用しますか?これは初めてのタイマーで作業しているので、どんな助けもありがとうございます!

+0

は、すべてのコードということですmUpdateTimeTask = new Runnable()割り当て後mHandler.postDelayed(mUpdateTimeTask, 100)をコールする必要がありますか?あなたは実際にここでrunメソッドを呼び出すことはありません。あなたはmUpdateTimeTask.start()を呼び出す必要があります。 – ethan

+0

いいえ、postDelayed()はstart()を必要としません –

答えて

3

はおそらく、あなたは

+0

これは正解です。タイマにmUpdateTimeTaskを追加した時点で、変数はnullです。単語の後でのみ、Runnableオブジェクトのアドレスが割り当てられます。だから本質的に彼はタイマーにヌルパラメータを与えている。 – Wizetux

+0

申し訳ありませんが、唯一の問題は、以前は別のメソッドを試してみたことですが、TextViewを設定しようとしている行でResourcesNotFoundExceptionが発生します。 – Kyle

関連する問題