5
public class MainActivity extends Activity
{
int min, sec;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    min = 5;
    sec = 0;
    final TextView timer1 = (TextView) findViewById(R.id.timer1);
    timer1.setText(min + ":" + sec);
    Thread t = new Thread() {
        public void run() {
                sec-=1;
                if (sec<0) {
                    min-=1;
                    sec=59;
                }
                timer1.setText(min + ":" + sec);
                try
                {
                    sleep(1000);
                }
                catch (InterruptedException e)
                {}
            }
    };
    t.start();
}
}

これは Java のスレッドのコードですが、機能しません。手伝って頂けますか?

5分から0時までカウントダウンするタイマーです。

4

2 に答える 2

4

UI ThreadバックグラウンドからThreadを更新しようとしています

timer1.setText(

あなたができないこと。runOnUiThread()AsyncTaskCountDownTimer、または同様のものを使用する必要があります。

例については、この回答を参照してくださいrunOnUiThread()

しかし、CountDownTimerはこのような場合に便利です。

また、SOに質問を投稿する際、「動かない」などの発言。非常に曖昧で、役に立たないことがよくあります。アプリがクラッシュしている場合は、コードと logcat の実際の結果と比較して期待される結果を示してください。

于 2013-07-24T16:13:12.513 に答える