2011-09-14 17 views
0

私はタイマーを実装しようとしていますが、大部分はうまく動作します。 しかし、初めて時計は始動しませんが、 oncreateメソッドにはわからないいくつかの問題があります。タイマーは初めて実装されていません

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.friends); 
    Splash.one_time = false; 
    initilize(); 
    mytime = new Thread() { 
     public void run() { 
      timer(); 
     } 
    }; 
    mytime.start(); 
    mUpdateTimeTask = new Runnable() { 
     public void run() { 
      if (count_down > 0) { 
       if (count_down <= 5) 
        clock.setTextColor(Color.RED); 
       else 
        clock.setTextColor(Color.GREEN); 
       clock.setText(String.format("%d", count_down--)); 
       mHandler.postDelayed(this, 1000); 
      } else { 
       clock.setTextColor(Color.RED); 
       clock.setText("0"); 
       timeout(); 
      } 
     } 
    }; 
} 

private void timer() { 
    mStartTime = System.currentTimeMillis(); 
    mHandler.removeCallbacks(mUpdateTimeTask); 
    mHandler.postDelayed(mUpdateTimeTask, 0); 
} 

答えて

1

あなたはonCreate()で、mUpdateTimeTaskを作成する前にmytime.start();を呼んでいます。そのため、メソッドtimer()は、初期化されていないmUpdateTimeTaskmHandlerに渡します。

あなたは最初に初期化して起動する必要があり、あなたのThread

mUpdateTimeTask = new Runnable() { 
    ... 
}; 

mytime.start(); 
関連する問題