2011-08-10 6 views
2

私は新しいアンドロイドです。私はいくつかの助けに感謝します。私はこのコードを持っています:timed java loop

 dateatm = (TextView) findViewById(R.id.date); 
     timeatm = (TextView) findViewById(R.id.tvTime); 
     Calendar currentDate = Calendar.getInstance(); 
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMM/dd"); 
     SimpleDateFormat värk = new SimpleDateFormat("HH:mm:ss"); 
     String dateNow = formatter.format(currentDate.getTime()); 
     String timeNow = värk.format(currentDate.getTime()); 
     dateatm.setText(dateNow); 
     timeatm.setText(timeNow); 

ご覧のとおり、私はそれから日時を取得しています。私が望むのは、1秒のループがあることです。毎秒1秒後に、基本的にクロックを取得するために、新しいものに何度も何度も何度も日付と時刻が更新されます。私はかなり新人ですので、すべての助けがこれを行う方法を高く評価されます。あなたが正確な例を持ってきたら、「ああ、それを使ってください、ありがとう!」というだけでなく、理解しやすくするように感謝します。あなたの助けと時間を

おかげで、 エルフ:)答え1のため


エラー:私は(特定の間隔でコードを実行する)私のプロジェクトでこの問題を解決し

08-10 18:55:41.335: ERROR/AndroidRuntime(886): FATAL EXCEPTION: Timer-0 
08-10 18:55:41.335: ERROR/AndroidRuntime(886): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at android.view.ViewRoot.checkThread(ViewRoot.java:2932) 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at android.view.ViewRoot.invalidateChild(ViewRoot.java:642) 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:668) 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at android.view.ViewGroup.invalidateChild(ViewGroup.java:2511) 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at android.view.View.invalidate(View.java:5279) 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at android.widget.TextView.checkForRelayout(TextView.java:5507) 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at android.widget.TextView.setText(TextView.java:2724) 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at android.widget.TextView.setText(TextView.java:2592) 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at android.widget.TextView.setText(TextView.java:2567) 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at viimane.voimalus.MainStuff$1.run(MainStuff.java:55) 
08-10 18:55:41.335: ERROR/AndroidRuntime(886):  at java.util.Timer$TimerImpl.run(Timer.java:284) 

答えて

5

: )

更新された回答を反映するように編集されました。

onCreateまたは類似で//初期化コード

timer = new Timer();  
refresher = new TimerTask() { 
    public void run() { 
     ActivityMain.this.sendEmptyMessage(REFRESH); 
    }; 
}; 
// first event immediately, following after 1 seconds each 
timer.scheduleAtFixedRate(refresher, 0, 1000); 
+0

うーん、それは1秒後に私にエラーを与えます。私はオープンポストにエラーを入れます。何が原因か分かりますか? – Elven

+0

mm、それはとても複雑です=。=、うまく動作しません – Elven

+1

UIスレッドからUIを更新する必要があります。 TaskTimerのコードは異なって表示されます。 TaskTimerからアクティビティに、データをリフレッシュするタイミングが来たという信号を送信する必要があります。 'ActivityMain.this.sendEmptyMessage(REFRESH);'はメッセージを送り、 'Handler'はそれを受け取ります。次に、あなたが受け取ったメッセージとそれが 'REFRESH'であるかどうかを確認します。あなたの質問に書いたコードを実行します。 – Im0rtality