计时器和TextView

时间:2013-01-08 07:47:33

标签: android

我正在尝试了解如何使用计时器。

在我的MainActivity.class中,在create方法的内部,我有这个代码

  Timer  timer = new Timer();
  TimerTask updateM = new GestioneSlide();
  timer.scheduleAtFixedRate(updateM , 1000, 5000); // i want to do a thing every second   for 5 seconds

然后我有另一个类,我覆盖方法运行,我想在我的MainActivity.class中的texview中写东西

class GestioneSlide extends TimerTask {


        @Override
       public void run() {
            MainActivity.TextViewName.setText("bla  bla");
            }

    }

我的应用程序崩溃,如果我删除MainActivity.TextViewName.setText("bla bla");我没有问题。可能我不能用那种方式写那个textview 我做错了什么?

2 个答案:

答案 0 :(得分:1)

计时器不会在GUI线程中触发其操作。使用runOnUiThread切换到它。假设GestioneSlide是您的Activity的内部类,请写

   class GestioneSlide extends TimerTask {

   public void run() {
     runOnUiThread(new Runnable() {
        public void run() {
           MainActivity.TextViewName.setText("bla  bla");
        }
     }
   }

答案 1 :(得分:1)

制作一个处理程序并在处理程序中显示msg。

  private class mainTask extends TimerTask
            { 
                public void run() 
                {
                    toastHandler.sendEmptyMessage(0);
                }
            } 
    private final Handler toastHandler = new Handler()
            {
                @Override
                public void handleMessage(Message msg)
                {
                    Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_SHORT).show();
                }
            };