android中的计时器崩溃,抛出java.util运行时错误

android中的计时器崩溃,抛出java.util运行时错误,android,Android,我正在尝试设计一个简单的计时器,它每秒钟运行一次,并将我的按钮文本更新到剩余时间。 但当我跑的时候,它一直在崩溃。 我所知道的是我的按钮有问题,因为我的代码恰好在第一秒钟运行,然后在那之后崩溃。 这是我的java代码 import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.util.Log; import an

我正在尝试设计一个简单的计时器,它每秒钟运行一次,并将我的按钮文本更新到剩余时间。 但当我跑的时候,它一直在崩溃。 我所知道的是我的按钮有问题,因为我的代码恰好在第一秒钟运行,然后在那之后崩溃。 这是我的java代码

import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;

public class information extends Activity {

Timer timer;
public Button button;
private int min = 5;
private int sec = 0;

public void onCreate(Bundle bundle){
    super.onCreate(bundle);

    setContentView(R.layout.information);
    button = (Button) findViewById(R.id.gettime);
    timer = new Timer();
    timer.schedule(new TimerTask() {

        @Override
        public void run() {

            if (sec == 0){
                sec = 60;
                min--;
            }
            sec--;

            if (sec >=10)
                Log.d("time",min+":"+sec);
            else Log.d("time",min+":0"+sec);    

            button.setText("ankur");
        }
    }, 10, 1000);
}

public void onPause(){
    super.onPause();
    finish();
}

public void onBackPressed(){
    super.onBackPressed();
    finish();
}
}
按钮.setText(“ankur”)无法在计时器中更新ui。计时器任务在不同的线程上运行。您只能在ui线程上更新ui

你的选择

  • 使用
    处理程序

  • 使用
    runOnUiThread

  • 您可以根据需要使用
    倒计时装置

  • 您可以使用
    runOnUiThread
    作为

     runOnUiThread(new Runnable() {
        public void run() {
        button.setText("ankur")
        }
    });
    
    对于
    处理程序


    这是因为您正在从此行的后台线程修改UI:

    button.setText("ankur");
    
    您必须使用如下处理程序:

    // in your activity and then
    private Handler handler = new Handler();
    
    在您的TimerTask中:

     handler.post(new Runnable() {
                        public void run(){
                            // do your UI job
                        }
                  });
    

    你能把你的logcat错误写出来吗?