-2

我试图了解如何使用计时器。

在我的 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中写我做错了什么?

4

2 回答 2

1

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

   class GestioneSlide extends TimerTask {

   public void run() {
     runOnUiThread(new Runnable() {
        public void run() {
           MainActivity.TextViewName.setText("bla  bla");
        }
     }
   }
于 2013-01-08T07:51:11.157 回答
1

制作一个处理程序并在处理程序内显示味精。

  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();
                }
            };
于 2013-01-08T08:00:10.140 回答