2013-04-16 24 views
-2

你好我试图使用线程来使拍摄系统工作 为了工作有一个按钮用于空间攻击,他可以每20秒使用 我试图follwing代码这样做:使用一个线程等待20秒,然后再做动作java android

 ballatack.setImageResource(R.drawable.buttonof); 
     Thread timer2 = new Thread(){ 
      public void run(){ 
      try{ 
       sleep(5000); 
      }catch(InterruptedException e){ 
       e.printStackTrace(); 
      }finally{ 
       ballatack.setImageResource(R.drawable.buttonof); 

      } 
      } 
     }; 
     timer2.start(); 

,但它不工作,日食说完全不像verythings是正确的,但是当我运行模拟器它不工作

+0

定义'它不work' ...我想你要连接到其他线程运行UI的东西例外... – Selvin

+0

试试'的Thread.sleep(5000)' –

回答

2

您无法触摸主线程以外的UI元素。尝试使用一个处理器来代替

private Handler mHandler = new Handler(); 

ballatack.setImageResource(R.drawable.buttonof); 

mHandler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     ballatack.setImageResource(R.drawable.buttonof); 
    } 
}, 5000); 
2

你不能在非UI元素进行交互-UI线程。使用处理器及其postDelayed方法来设置UI线程图像

2

试试这个代码:

ballatack.postDelayed(new Runnable(){ 
    @Override 
    public void run(){ 
     ballatack.setImageResource(R.drawable.buttonof); 
    } 
}, 5000); 

这样,你没有创建一个阻塞的线程,只与UI线程的UI元素进行交互。

+0

不错!我忘记了UI元素也可以在内部使用postDelayed方法 –

+0

,这被称为视图已经拥有的处理程序。这是一个非常方便的方法。 – Budius

相关问题