2011-11-23 51 views
1

我的朋友和我試圖創建一款遊戲的玩家想要使用計時器來評分玩家,所以我們希望在遊戲開始時顯示一個從0開始的屏幕計時器,當他們完成時停止遊戲。Android應用程序中的屏幕計時器?

我已經看了一些其他帖子以及在android開發網站中使用Handler和Runnable對象,以使其工作正常,但是到目前爲止,Runnable對象中的run()方法正在被完全跳過,所以沒有做任何事情。現在,我有我們的活動的onCreate方法內的以下內容:

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); 
     } 
    }; 

現在第一關,誰能告訴我,爲什麼run()方法被完全跳​​過?此外,這將工作爲我們正在嘗試做什麼?還是應該在其他地方有Runnable對象?使用不同的方法?這是我們第一次使用計時器,所以任何幫助表示讚賞!

+0

是你所有的代碼?你從來沒有真正在這裏調用run方法。你需要調用mUpdateTimeTask.start(); – ethan

+0

不,postDelayed()不需要start() –

回答

3

也許你需要調用mHandler.postDelayed(mUpdateTimeTask, 100)mUpdateTimeTask = new Runnable()分配後

+0

這是正確的答案。當他將mUpdateTimeTask添加到計時器時,該變量爲空。只有在單詞之後纔會分配Runnable對象地址。所以基本上他給計時器一個空參數。 – Wizetux

+0

好吧,現在唯一的問題(我也嘗試過嘗試另一種方法)是在我嘗試設置TextView的行處得到ResourcesNotFoundException。 – Kyle

相關問題